-- This file is part of the Wire Server implementation.
--
-- Copyright (C) 2022 Wire Swiss GmbH <opensource@wire.com>
--
-- This program is free software: you can redistribute it and/or modify it under
-- the terms of the GNU Affero General Public License as published by the Free
-- Software Foundation, either version 3 of the License, or (at your option) any
-- later version.
--
-- This program is distributed in the hope that it will be useful, but WITHOUT
-- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-- FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
-- details.
--
-- You should have received a copy of the GNU Affero General Public License along
-- with this program. If not, see <https://www.gnu.org/licenses/>.
module Galley.Run
  ( run,
    mkApp,
    mkLogger,
  )
where

import AWS.Util (readAuthExpiration)
import Amazonka qualified as AWS
import Cassandra (runClient, shutdown)
import Cassandra.Schema (versionCheck)
import Control.Concurrent.Async qualified as Async
import Control.Exception (finally)
import Control.Lens (view, (.~), (^.))
import Control.Monad.Codensity
import Data.Aeson qualified as Aeson
import Data.ByteString.UTF8 qualified as UTF8
import Data.Metrics.AWS (gaugeTokenRemaing)
import Data.Metrics.Servant
import Data.Misc (portNumber)
import Data.Singletons
import Data.Text (unpack)
import Galley.API.Federation
import Galley.API.Internal
import Galley.API.Public.Servant
import Galley.App
import Galley.App qualified as App
import Galley.Aws (awsEnv)
import Galley.Cassandra
import Galley.Monad
import Galley.Options
import Galley.Queue qualified as Q
import Imports
import Network.HTTP.Media.RenderHeader qualified as HTTPMedia
import Network.HTTP.Types qualified as HTTP
import Network.Wai
import Network.Wai.Middleware.Gunzip qualified as GZip
import Network.Wai.Middleware.Gzip qualified as GZip
import Network.Wai.Utilities.Error
import Network.Wai.Utilities.Request
import Network.Wai.Utilities.Server
import OpenTelemetry.Instrumentation.Wai qualified as Otel
import OpenTelemetry.Trace as Otel
import Prometheus qualified as Prom
import Servant hiding (route)
import System.Logger qualified as Log
import System.Logger.Extended (mkLogger)
import Util.Options
import Wire.API.Routes.API
import Wire.API.Routes.Public.Galley
import Wire.API.Routes.Version
import Wire.API.Routes.Version.Wai
import Wire.OpenTelemetry (withTracerC)

run :: Opts -> IO ()
run :: Opts -> IO ()
run Opts
opts = Codensity IO () -> IO ()
forall (f :: * -> *) a. Applicative f => Codensity f a -> f a
lowerCodensity do
  Tracer
tracer <- Codensity IO Tracer
withTracerC
  (Application
app, Env
env) <- Opts -> Codensity IO (Application, Env)
mkApp Opts
opts
  Settings
settings' <-
    IO Settings -> Codensity IO Settings
forall (m :: * -> *) a. Monad m => m a -> Codensity m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Settings -> Codensity IO Settings)
-> IO Settings -> Codensity IO Settings
forall a b. (a -> b) -> a -> b
$
      Server -> IO Settings
forall (m :: * -> *). MonadIO m => Server -> m Settings
newSettings (Server -> IO Settings) -> Server -> IO Settings
forall a b. (a -> b) -> a -> b
$
        String -> Word16 -> Logger -> Server
defaultServer
          (Text -> String
unpack (Text -> String) -> Text -> String
forall a b. (a -> b) -> a -> b
$ Opts
opts Opts -> Getting Text Opts Text -> Text
forall s a. s -> Getting a s a -> a
^. (Endpoint -> Const Text Endpoint) -> Opts -> Const Text Opts
Lens' Opts Endpoint
galley ((Endpoint -> Const Text Endpoint) -> Opts -> Const Text Opts)
-> ((Text -> Const Text Text) -> Endpoint -> Const Text Endpoint)
-> Getting Text Opts Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Text -> Const Text Text) -> Endpoint -> Const Text Endpoint
Lens' Endpoint Text
host)
          (Port -> Word16
portNumber (Port -> Word16) -> Port -> Word16
forall a b. (a -> b) -> a -> b
$ Word16 -> Port
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word16 -> Port) -> Word16 -> Port
forall a b. (a -> b) -> a -> b
$ Opts
opts Opts -> Getting Word16 Opts Word16 -> Word16
forall s a. s -> Getting a s a -> a
^. (Endpoint -> Const Word16 Endpoint) -> Opts -> Const Word16 Opts
Lens' Opts Endpoint
galley ((Endpoint -> Const Word16 Endpoint) -> Opts -> Const Word16 Opts)
-> ((Word16 -> Const Word16 Word16)
    -> Endpoint -> Const Word16 Endpoint)
-> Getting Word16 Opts Word16
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Word16 -> Const Word16 Word16)
-> Endpoint -> Const Word16 Endpoint
Lens' Endpoint Word16
port)
          (Env
env Env -> Getting Logger Env Logger -> Logger
forall s a. s -> Getting a s a -> a
^. Getting Logger Env Logger
Lens' Env Logger
App.applog)

  Maybe Env -> (Env -> Codensity IO ()) -> Codensity IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
t a -> (a -> m b) -> m ()
forM_ (Env
env Env -> Getting (Maybe Env) Env (Maybe Env) -> Maybe Env
forall s a. s -> Getting a s a -> a
^. Getting (Maybe Env) Env (Maybe Env)
Lens' Env (Maybe Env)
aEnv) ((Env -> Codensity IO ()) -> Codensity IO ())
-> (Env -> Codensity IO ()) -> Codensity IO ()
forall a b. (a -> b) -> a -> b
$ \Env
aws ->
    Codensity IO (Async ()) -> Codensity IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Codensity IO (Async ()) -> Codensity IO ())
-> Codensity IO (Async ()) -> Codensity IO ()
forall a b. (a -> b) -> a -> b
$ (forall b. (Async () -> IO b) -> IO b) -> Codensity IO (Async ())
forall k (m :: k -> *) a.
(forall (b :: k). (a -> m b) -> m b) -> Codensity m a
Codensity ((forall b. (Async () -> IO b) -> IO b) -> Codensity IO (Async ()))
-> (forall b. (Async () -> IO b) -> IO b)
-> Codensity IO (Async ())
forall a b. (a -> b) -> a -> b
$ IO () -> (Async () -> IO b) -> IO b
forall a b. IO a -> (Async a -> IO b) -> IO b
Async.withAsync (IO () -> (Async () -> IO b) -> IO b)
-> IO () -> (Async () -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ Env -> IO ()
forall (m :: * -> *). MonadIO m => Env -> m ()
collectAuthMetrics (Env
aws Env -> Getting Env Env Env -> Env
forall s a. s -> Getting a s a -> a
^. Getting Env Env Env
Lens' Env Env
awsEnv)

  Codensity IO (Async ()) -> Codensity IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Codensity IO (Async ()) -> Codensity IO ())
-> Codensity IO (Async ()) -> Codensity IO ()
forall a b. (a -> b) -> a -> b
$ (forall b. (Async () -> IO b) -> IO b) -> Codensity IO (Async ())
forall k (m :: k -> *) a.
(forall (b :: k). (a -> m b) -> m b) -> Codensity m a
Codensity ((forall b. (Async () -> IO b) -> IO b) -> Codensity IO (Async ()))
-> (forall b. (Async () -> IO b) -> IO b)
-> Codensity IO (Async ())
forall a b. (a -> b) -> a -> b
$ IO () -> (Async () -> IO b) -> IO b
forall a b. IO a -> (Async a -> IO b) -> IO b
Async.withAsync (IO () -> (Async () -> IO b) -> IO b)
-> IO () -> (Async () -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ Env -> App () -> IO ()
forall a. Env -> App a -> IO a
runApp Env
env App ()
deleteLoop
  Codensity IO (Async ()) -> Codensity IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Codensity IO (Async ()) -> Codensity IO ())
-> Codensity IO (Async ()) -> Codensity IO ()
forall a b. (a -> b) -> a -> b
$ (forall b. (Async () -> IO b) -> IO b) -> Codensity IO (Async ())
forall k (m :: k -> *) a.
(forall (b :: k). (a -> m b) -> m b) -> Codensity m a
Codensity ((forall b. (Async () -> IO b) -> IO b) -> Codensity IO (Async ()))
-> (forall b. (Async () -> IO b) -> IO b)
-> Codensity IO (Async ())
forall a b. (a -> b) -> a -> b
$ IO () -> (Async () -> IO b) -> IO b
forall a b. IO a -> (Async a -> IO b) -> IO b
Async.withAsync (IO () -> (Async () -> IO b) -> IO b)
-> IO () -> (Async () -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ Env -> App () -> IO ()
forall a. Env -> App a -> IO a
runApp Env
env App ()
refreshMetrics
  IO () -> Codensity IO ()
forall (m :: * -> *) a. Monad m => m a -> Codensity m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> Codensity IO ()) -> IO () -> Codensity IO ()
forall a b. (a -> b) -> a -> b
$ Tracer -> Text -> SpanArguments -> IO () -> IO ()
forall (m :: * -> *) a.
(MonadUnliftIO m, HasCallStack) =>
Tracer -> Text -> SpanArguments -> m a -> m a
inSpan Tracer
tracer Text
"galley" SpanArguments
defaultSpanArguments {kind = Otel.Server} (Settings -> Application -> Maybe Int -> IO ()
runSettingsWithShutdown Settings
settings' Application
app Maybe Int
forall a. Maybe a
Nothing) IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO a
`finally` Env -> IO ()
closeApp Env
env

mkApp :: Opts -> Codensity IO (Application, Env)
mkApp :: Opts -> Codensity IO (Application, Env)
mkApp Opts
opts =
  do
    Logger
logger <- IO Logger -> Codensity IO Logger
forall (m :: * -> *) a. Monad m => m a -> Codensity m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Logger -> Codensity IO Logger)
-> IO Logger -> Codensity IO Logger
forall a b. (a -> b) -> a -> b
$ Level -> Maybe (Last Bool) -> Maybe (Last LogFormat) -> IO Logger
mkLogger (Opts
opts Opts -> Getting Level Opts Level -> Level
forall s a. s -> Getting a s a -> a
^. Getting Level Opts Level
Lens' Opts Level
logLevel) (Opts
opts Opts
-> Getting (Maybe (Last Bool)) Opts (Maybe (Last Bool))
-> Maybe (Last Bool)
forall s a. s -> Getting a s a -> a
^. Getting (Maybe (Last Bool)) Opts (Maybe (Last Bool))
Lens' Opts (Maybe (Last Bool))
logNetStrings) (Opts
opts Opts
-> Getting (Maybe (Last LogFormat)) Opts (Maybe (Last LogFormat))
-> Maybe (Last LogFormat)
forall s a. s -> Getting a s a -> a
^. Getting (Maybe (Last LogFormat)) Opts (Maybe (Last LogFormat))
Lens' Opts (Maybe (Last LogFormat))
logFormat)
    Env
env <- IO Env -> Codensity IO Env
forall (m :: * -> *) a. Monad m => m a -> Codensity m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Env -> Codensity IO Env) -> IO Env -> Codensity IO Env
forall a b. (a -> b) -> a -> b
$ Opts -> Logger -> IO Env
App.createEnv Opts
opts Logger
logger
    Middleware
otelMiddleware <- IO Middleware -> Codensity IO Middleware
forall (m :: * -> *) a. Monad m => m a -> Codensity m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift IO Middleware
HasCallStack => IO Middleware
Otel.newOpenTelemetryWaiMiddleware
    IO () -> Codensity IO ()
forall (m :: * -> *) a. Monad m => m a -> Codensity m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> Codensity IO ()) -> IO () -> Codensity IO ()
forall a b. (a -> b) -> a -> b
$ ClientState -> Client () -> IO ()
forall (m :: * -> *) a. MonadIO m => ClientState -> Client a -> m a
runClient (Env
env Env -> Getting ClientState Env ClientState -> ClientState
forall s a. s -> Getting a s a -> a
^. Getting ClientState Env ClientState
Lens' Env ClientState
cstate) (Client () -> IO ()) -> Client () -> IO ()
forall a b. (a -> b) -> a -> b
$ Int32 -> Client ()
versionCheck Int32
schemaVersion
    let middlewares :: Middleware
middlewares =
          Set Version -> Middleware
versionMiddleware ((VersionExp -> Set Version) -> Set VersionExp -> Set Version
forall m a. Monoid m => (a -> m) -> Set a -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap VersionExp -> Set Version
expandVersionExp (Opts
opts Opts
-> Getting (Set VersionExp) Opts (Set VersionExp) -> Set VersionExp
forall s a. s -> Getting a s a -> a
^. (Settings -> Const (Set VersionExp) Settings)
-> Opts -> Const (Set VersionExp) Opts
Lens' Opts Settings
settings ((Settings -> Const (Set VersionExp) Settings)
 -> Opts -> Const (Set VersionExp) Opts)
-> ((Set VersionExp -> Const (Set VersionExp) (Set VersionExp))
    -> Settings -> Const (Set VersionExp) Settings)
-> Getting (Set VersionExp) Opts (Set VersionExp)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set VersionExp -> Const (Set VersionExp) (Set VersionExp))
-> Settings -> Const (Set VersionExp) Settings
Lens' Settings (Set VersionExp)
disabledAPIVersions))
            Middleware -> Middleware -> Middleware
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Logger -> HeaderName -> Middleware
requestIdMiddleware Logger
logger HeaderName
defaultRequestIdHeaderName
            Middleware -> Middleware -> Middleware
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Proxy
  (((Named
       "get-unqualified-conversation"
       (Summary "Get a conversation by ID"
        :> (Until 'V3
            :> (CanThrow 'ConvNotFound
                :> (CanThrow 'ConvAccessDenied
                    :> (ZLocalUser
                        :> ("conversations"
                            :> (Capture "cnv" ConvId
                                :> MultiVerb
                                     'GET
                                     '[JSON]
                                     '[VersionedRespond 'V2 200 "Conversation" Conversation]
                                     Conversation)))))))
     :<|> (Named
             "get-unqualified-conversation-legalhold-alias"
             (Summary "Get a conversation by ID (Legalhold alias)"
              :> (Until 'V2
                  :> (CanThrow 'ConvNotFound
                      :> (CanThrow 'ConvAccessDenied
                          :> (ZLocalUser
                              :> ("legalhold"
                                  :> ("conversations"
                                      :> (Capture "cnv" ConvId
                                          :> MultiVerb
                                               'GET
                                               '[JSON]
                                               '[VersionedRespond
                                                   'V2 200 "Conversation" Conversation]
                                               Conversation))))))))
           :<|> (Named
                   "get-conversation@v2"
                   (Summary "Get a conversation by ID"
                    :> (Until 'V3
                        :> (MakesFederatedCall 'Galley "get-conversations"
                            :> (CanThrow 'ConvNotFound
                                :> (CanThrow 'ConvAccessDenied
                                    :> (ZLocalUser
                                        :> ("conversations"
                                            :> (QualifiedCapture "cnv" ConvId
                                                :> MultiVerb
                                                     'GET
                                                     '[JSON]
                                                     '[VersionedRespond
                                                         'V2 200 "Conversation" Conversation]
                                                     Conversation))))))))
                 :<|> (Named
                         "get-conversation@v5"
                         (Summary "Get a conversation by ID"
                          :> (From 'V3
                              :> (Until 'V6
                                  :> (MakesFederatedCall 'Galley "get-conversations"
                                      :> (CanThrow 'ConvNotFound
                                          :> (CanThrow 'ConvAccessDenied
                                              :> (ZLocalUser
                                                  :> ("conversations"
                                                      :> (QualifiedCapture "cnv" ConvId
                                                          :> MultiVerb
                                                               'GET
                                                               '[JSON]
                                                               '[VersionedRespond
                                                                   'V5
                                                                   200
                                                                   "Conversation"
                                                                   Conversation]
                                                               Conversation)))))))))
                       :<|> (Named
                               "get-conversation"
                               (Summary "Get a conversation by ID"
                                :> (From 'V6
                                    :> (MakesFederatedCall 'Galley "get-conversations"
                                        :> (CanThrow 'ConvNotFound
                                            :> (CanThrow 'ConvAccessDenied
                                                :> (ZLocalUser
                                                    :> ("conversations"
                                                        :> (QualifiedCapture "cnv" ConvId
                                                            :> Get '[JSON] Conversation))))))))
                             :<|> (Named
                                     "get-conversation-roles"
                                     (Summary
                                        "Get existing roles available for the given conversation"
                                      :> (CanThrow 'ConvNotFound
                                          :> (CanThrow 'ConvAccessDenied
                                              :> (ZLocalUser
                                                  :> ("conversations"
                                                      :> (Capture "cnv" ConvId
                                                          :> ("roles"
                                                              :> Get
                                                                   '[JSON]
                                                                   ConversationRolesList)))))))
                                   :<|> (Named
                                           "get-group-info"
                                           (Summary "Get MLS group information"
                                            :> (From 'V5
                                                :> (MakesFederatedCall 'Galley "query-group-info"
                                                    :> (CanThrow 'ConvNotFound
                                                        :> (CanThrow 'MLSMissingGroupInfo
                                                            :> (CanThrow 'MLSNotEnabled
                                                                :> (ZLocalUser
                                                                    :> ("conversations"
                                                                        :> (QualifiedCapture
                                                                              "cnv" ConvId
                                                                            :> ("groupinfo"
                                                                                :> MultiVerb
                                                                                     'GET
                                                                                     '[MLS]
                                                                                     '[Respond
                                                                                         200
                                                                                         "The group information"
                                                                                         GroupInfoData]
                                                                                     GroupInfoData))))))))))
                                         :<|> (Named
                                                 "list-conversation-ids-unqualified"
                                                 (Summary
                                                    "[deprecated] Get all local conversation IDs."
                                                  :> (Until 'V3
                                                      :> (ZLocalUser
                                                          :> ("conversations"
                                                              :> ("ids"
                                                                  :> (QueryParam'
                                                                        '[Optional, Strict,
                                                                          Description
                                                                            "Conversation ID to start from (exclusive)"]
                                                                        "start"
                                                                        ConvId
                                                                      :> (QueryParam'
                                                                            '[Optional, Strict,
                                                                              Description
                                                                                "Maximum number of IDs to return"]
                                                                            "size"
                                                                            (Range 1 1000 Int32)
                                                                          :> Get
                                                                               '[JSON]
                                                                               (ConversationList
                                                                                  ConvId))))))))
                                               :<|> (Named
                                                       "list-conversation-ids-v2"
                                                       (Summary "Get all conversation IDs."
                                                        :> (Until 'V3
                                                            :> (Description PaginationDocs
                                                                :> (ZLocalUser
                                                                    :> ("conversations"
                                                                        :> ("list-ids"
                                                                            :> (ReqBody
                                                                                  '[JSON]
                                                                                  GetPaginatedConversationIds
                                                                                :> Post
                                                                                     '[JSON]
                                                                                     ConvIdsPage)))))))
                                                     :<|> (Named
                                                             "list-conversation-ids"
                                                             (Summary "Get all conversation IDs."
                                                              :> (From 'V3
                                                                  :> (Description PaginationDocs
                                                                      :> (ZLocalUser
                                                                          :> ("conversations"
                                                                              :> ("list-ids"
                                                                                  :> (ReqBody
                                                                                        '[JSON]
                                                                                        GetPaginatedConversationIds
                                                                                      :> Post
                                                                                           '[JSON]
                                                                                           ConvIdsPage)))))))
                                                           :<|> (Named
                                                                   "get-conversations"
                                                                   (Summary
                                                                      "Get all *local* conversations."
                                                                    :> (Until 'V3
                                                                        :> (Description
                                                                              "Will not return remote conversations.\n\nUse `POST /conversations/list-ids` followed by `POST /conversations/list` instead."
                                                                            :> (ZLocalUser
                                                                                :> ("conversations"
                                                                                    :> (QueryParam'
                                                                                          '[Optional,
                                                                                            Strict,
                                                                                            Description
                                                                                              "Mutually exclusive with 'start' (at most 32 IDs per request)"]
                                                                                          "ids"
                                                                                          (Range
                                                                                             1
                                                                                             32
                                                                                             (CommaSeparatedList
                                                                                                ConvId))
                                                                                        :> (QueryParam'
                                                                                              '[Optional,
                                                                                                Strict,
                                                                                                Description
                                                                                                  "Conversation ID to start from (exclusive)"]
                                                                                              "start"
                                                                                              ConvId
                                                                                            :> (QueryParam'
                                                                                                  '[Optional,
                                                                                                    Strict,
                                                                                                    Description
                                                                                                      "Maximum number of conversations to return"]
                                                                                                  "size"
                                                                                                  (Range
                                                                                                     1
                                                                                                     500
                                                                                                     Int32)
                                                                                                :> MultiVerb
                                                                                                     'GET
                                                                                                     '[JSON]
                                                                                                     '[VersionedRespond
                                                                                                         'V2
                                                                                                         200
                                                                                                         "List of local conversations"
                                                                                                         (ConversationList
                                                                                                            Conversation)]
                                                                                                     (ConversationList
                                                                                                        Conversation)))))))))
                                                                 :<|> (Named
                                                                         "list-conversations@v1"
                                                                         (Summary
                                                                            "Get conversation metadata for a list of conversation ids"
                                                                          :> (MakesFederatedCall
                                                                                'Galley
                                                                                "get-conversations"
                                                                              :> (Until 'V2
                                                                                  :> (ZLocalUser
                                                                                      :> ("conversations"
                                                                                          :> ("list"
                                                                                              :> ("v2"
                                                                                                  :> (ReqBody
                                                                                                        '[JSON]
                                                                                                        ListConversations
                                                                                                      :> Post
                                                                                                           '[JSON]
                                                                                                           ConversationsResponse))))))))
                                                                       :<|> (Named
                                                                               "list-conversations@v2"
                                                                               (Summary
                                                                                  "Get conversation metadata for a list of conversation ids"
                                                                                :> (MakesFederatedCall
                                                                                      'Galley
                                                                                      "get-conversations"
                                                                                    :> (From 'V2
                                                                                        :> (Until
                                                                                              'V3
                                                                                            :> (ZLocalUser
                                                                                                :> ("conversations"
                                                                                                    :> ("list"
                                                                                                        :> (ReqBody
                                                                                                              '[JSON]
                                                                                                              ListConversations
                                                                                                            :> MultiVerb
                                                                                                                 'POST
                                                                                                                 '[JSON]
                                                                                                                 '[VersionedRespond
                                                                                                                     'V2
                                                                                                                     200
                                                                                                                     "Conversation page"
                                                                                                                     ConversationsResponse]
                                                                                                                 ConversationsResponse))))))))
                                                                             :<|> (Named
                                                                                     "list-conversations@v5"
                                                                                     (Summary
                                                                                        "Get conversation metadata for a list of conversation ids"
                                                                                      :> (MakesFederatedCall
                                                                                            'Galley
                                                                                            "get-conversations"
                                                                                          :> (From
                                                                                                'V3
                                                                                              :> (Until
                                                                                                    'V6
                                                                                                  :> (ZLocalUser
                                                                                                      :> ("conversations"
                                                                                                          :> ("list"
                                                                                                              :> (ReqBody
                                                                                                                    '[JSON]
                                                                                                                    ListConversations
                                                                                                                  :> MultiVerb
                                                                                                                       'POST
                                                                                                                       '[JSON]
                                                                                                                       '[VersionedRespond
                                                                                                                           'V5
                                                                                                                           200
                                                                                                                           "Conversation page"
                                                                                                                           ConversationsResponse]
                                                                                                                       ConversationsResponse))))))))
                                                                                   :<|> (Named
                                                                                           "list-conversations"
                                                                                           (Summary
                                                                                              "Get conversation metadata for a list of conversation ids"
                                                                                            :> (MakesFederatedCall
                                                                                                  'Galley
                                                                                                  "get-conversations"
                                                                                                :> (From
                                                                                                      'V6
                                                                                                    :> (ZLocalUser
                                                                                                        :> ("conversations"
                                                                                                            :> ("list"
                                                                                                                :> (ReqBody
                                                                                                                      '[JSON]
                                                                                                                      ListConversations
                                                                                                                    :> Post
                                                                                                                         '[JSON]
                                                                                                                         ConversationsResponse)))))))
                                                                                         :<|> (Named
                                                                                                 "get-conversation-by-reusable-code"
                                                                                                 (Summary
                                                                                                    "Get limited conversation information by key/code pair"
                                                                                                  :> (CanThrow
                                                                                                        'CodeNotFound
                                                                                                      :> (CanThrow
                                                                                                            'InvalidConversationPassword
                                                                                                          :> (CanThrow
                                                                                                                'ConvNotFound
                                                                                                              :> (CanThrow
                                                                                                                    'ConvAccessDenied
                                                                                                                  :> (CanThrow
                                                                                                                        'GuestLinksDisabled
                                                                                                                      :> (CanThrow
                                                                                                                            'NotATeamMember
                                                                                                                          :> (ZLocalUser
                                                                                                                              :> ("conversations"
                                                                                                                                  :> ("join"
                                                                                                                                      :> (QueryParam'
                                                                                                                                            '[Required,
                                                                                                                                              Strict]
                                                                                                                                            "key"
                                                                                                                                            Key
                                                                                                                                          :> (QueryParam'
                                                                                                                                                '[Required,
                                                                                                                                                  Strict]
                                                                                                                                                "code"
                                                                                                                                                Value
                                                                                                                                              :> Get
                                                                                                                                                   '[JSON]
                                                                                                                                                   ConversationCoverView))))))))))))
                                                                                               :<|> (Named
                                                                                                       "create-group-conversation@v2"
                                                                                                       (Summary
                                                                                                          "Create a new conversation"
                                                                                                        :> (DescriptionOAuthScope
                                                                                                              'WriteConversations
                                                                                                            :> (MakesFederatedCall
                                                                                                                  'Brig
                                                                                                                  "api-version"
                                                                                                                :> (MakesFederatedCall
                                                                                                                      'Galley
                                                                                                                      "on-conversation-created"
                                                                                                                    :> (MakesFederatedCall
                                                                                                                          'Galley
                                                                                                                          "on-conversation-updated"
                                                                                                                        :> (Until
                                                                                                                              'V3
                                                                                                                            :> (CanThrow
                                                                                                                                  'ConvAccessDenied
                                                                                                                                :> (CanThrow
                                                                                                                                      'MLSNonEmptyMemberList
                                                                                                                                    :> (CanThrow
                                                                                                                                          'MLSNotEnabled
                                                                                                                                        :> (CanThrow
                                                                                                                                              'NotConnected
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'NotATeamMember
                                                                                                                                                :> (CanThrow
                                                                                                                                                      OperationDenied
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'MissingLegalholdConsent
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              UnreachableBackendsLegacy
                                                                                                                                                            :> (Description
                                                                                                                                                                  "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                    :> (ZOptConn
                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                            :> (VersionedReqBody
                                                                                                                                                                                  'V2
                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                  NewConv
                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                     'POST
                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                     '[WithHeaders
                                                                                                                                                                                         ConversationHeaders
                                                                                                                                                                                         Conversation
                                                                                                                                                                                         (VersionedRespond
                                                                                                                                                                                            'V2
                                                                                                                                                                                            200
                                                                                                                                                                                            "Conversation existed"
                                                                                                                                                                                            Conversation),
                                                                                                                                                                                       WithHeaders
                                                                                                                                                                                         ConversationHeaders
                                                                                                                                                                                         Conversation
                                                                                                                                                                                         (VersionedRespond
                                                                                                                                                                                            'V2
                                                                                                                                                                                            201
                                                                                                                                                                                            "Conversation created"
                                                                                                                                                                                            Conversation)]
                                                                                                                                                                                     (ResponseForExistedCreated
                                                                                                                                                                                        Conversation))))))))))))))))))))
                                                                                                     :<|> (Named
                                                                                                             "create-group-conversation@v3"
                                                                                                             (Summary
                                                                                                                "Create a new conversation"
                                                                                                              :> (DescriptionOAuthScope
                                                                                                                    'WriteConversations
                                                                                                                  :> (MakesFederatedCall
                                                                                                                        'Brig
                                                                                                                        "api-version"
                                                                                                                      :> (MakesFederatedCall
                                                                                                                            'Galley
                                                                                                                            "on-conversation-created"
                                                                                                                          :> (MakesFederatedCall
                                                                                                                                'Galley
                                                                                                                                "on-conversation-updated"
                                                                                                                              :> (From
                                                                                                                                    'V3
                                                                                                                                  :> (Until
                                                                                                                                        'V4
                                                                                                                                      :> (CanThrow
                                                                                                                                            'ConvAccessDenied
                                                                                                                                          :> (CanThrow
                                                                                                                                                'MLSNonEmptyMemberList
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'MLSNotEnabled
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'NotConnected
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'NotATeamMember
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                OperationDenied
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'MissingLegalholdConsent
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        UnreachableBackendsLegacy
                                                                                                                                                                      :> (Description
                                                                                                                                                                            "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                              :> (ZOptConn
                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                            NewConv
                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                               'POST
                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                               '[WithHeaders
                                                                                                                                                                                                   ConversationHeaders
                                                                                                                                                                                                   Conversation
                                                                                                                                                                                                   (VersionedRespond
                                                                                                                                                                                                      'V3
                                                                                                                                                                                                      200
                                                                                                                                                                                                      "Conversation existed"
                                                                                                                                                                                                      Conversation),
                                                                                                                                                                                                 WithHeaders
                                                                                                                                                                                                   ConversationHeaders
                                                                                                                                                                                                   Conversation
                                                                                                                                                                                                   (VersionedRespond
                                                                                                                                                                                                      'V3
                                                                                                                                                                                                      201
                                                                                                                                                                                                      "Conversation created"
                                                                                                                                                                                                      Conversation)]
                                                                                                                                                                                               (ResponseForExistedCreated
                                                                                                                                                                                                  Conversation)))))))))))))))))))))
                                                                                                           :<|> (Named
                                                                                                                   "create-group-conversation@v5"
                                                                                                                   (Summary
                                                                                                                      "Create a new conversation"
                                                                                                                    :> (MakesFederatedCall
                                                                                                                          'Brig
                                                                                                                          "api-version"
                                                                                                                        :> (MakesFederatedCall
                                                                                                                              'Brig
                                                                                                                              "get-not-fully-connected-backends"
                                                                                                                            :> (MakesFederatedCall
                                                                                                                                  'Galley
                                                                                                                                  "on-conversation-created"
                                                                                                                                :> (MakesFederatedCall
                                                                                                                                      'Galley
                                                                                                                                      "on-conversation-updated"
                                                                                                                                    :> (From
                                                                                                                                          'V4
                                                                                                                                        :> (Until
                                                                                                                                              'V6
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'MLSNonEmptyMemberList
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'MLSNotEnabled
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'NotConnected
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      OperationDenied
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          'MissingLegalholdConsent
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              NonFederatingBackends
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  UnreachableBackends
                                                                                                                                                                                :> (Description
                                                                                                                                                                                      "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                        :> (ZOptConn
                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                      NewConv
                                                                                                                                                                                                    :> MultiVerb
                                                                                                                                                                                                         'POST
                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                         '[WithHeaders
                                                                                                                                                                                                             ConversationHeaders
                                                                                                                                                                                                             Conversation
                                                                                                                                                                                                             (VersionedRespond
                                                                                                                                                                                                                'V5
                                                                                                                                                                                                                200
                                                                                                                                                                                                                "Conversation existed"
                                                                                                                                                                                                                Conversation),
                                                                                                                                                                                                           WithHeaders
                                                                                                                                                                                                             ConversationHeaders
                                                                                                                                                                                                             CreateGroupConversation
                                                                                                                                                                                                             (VersionedRespond
                                                                                                                                                                                                                'V5
                                                                                                                                                                                                                201
                                                                                                                                                                                                                "Conversation created"
                                                                                                                                                                                                                CreateGroupConversation)]
                                                                                                                                                                                                         CreateGroupConversationResponse)))))))))))))))))))))
                                                                                                                 :<|> (Named
                                                                                                                         "create-group-conversation"
                                                                                                                         (Summary
                                                                                                                            "Create a new conversation"
                                                                                                                          :> (MakesFederatedCall
                                                                                                                                'Brig
                                                                                                                                "api-version"
                                                                                                                              :> (MakesFederatedCall
                                                                                                                                    'Brig
                                                                                                                                    "get-not-fully-connected-backends"
                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                        'Galley
                                                                                                                                        "on-conversation-created"
                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                            'Galley
                                                                                                                                            "on-conversation-updated"
                                                                                                                                          :> (From
                                                                                                                                                'V6
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'ConvAccessDenied
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'MLSNonEmptyMemberList
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'MLSNotEnabled
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'NotConnected
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        OperationDenied
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'MissingLegalholdConsent
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                NonFederatingBackends
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    UnreachableBackends
                                                                                                                                                                                  :> (Description
                                                                                                                                                                                        "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                          :> (ZOptConn
                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                        NewConv
                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                           'POST
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           '[WithHeaders
                                                                                                                                                                                                               ConversationHeaders
                                                                                                                                                                                                               Conversation
                                                                                                                                                                                                               (VersionedRespond
                                                                                                                                                                                                                  'V6
                                                                                                                                                                                                                  200
                                                                                                                                                                                                                  "Conversation existed"
                                                                                                                                                                                                                  Conversation),
                                                                                                                                                                                                             WithHeaders
                                                                                                                                                                                                               ConversationHeaders
                                                                                                                                                                                                               CreateGroupConversation
                                                                                                                                                                                                               (VersionedRespond
                                                                                                                                                                                                                  'V6
                                                                                                                                                                                                                  201
                                                                                                                                                                                                                  "Conversation created"
                                                                                                                                                                                                                  CreateGroupConversation)]
                                                                                                                                                                                                           CreateGroupConversationResponse))))))))))))))))))))
                                                                                                                       :<|> (Named
                                                                                                                               "create-self-conversation@v2"
                                                                                                                               (Summary
                                                                                                                                  "Create a self-conversation"
                                                                                                                                :> (Until
                                                                                                                                      'V3
                                                                                                                                    :> (ZLocalUser
                                                                                                                                        :> ("conversations"
                                                                                                                                            :> ("self"
                                                                                                                                                :> MultiVerb
                                                                                                                                                     'POST
                                                                                                                                                     '[JSON]
                                                                                                                                                     '[WithHeaders
                                                                                                                                                         ConversationHeaders
                                                                                                                                                         Conversation
                                                                                                                                                         (VersionedRespond
                                                                                                                                                            'V2
                                                                                                                                                            200
                                                                                                                                                            "Conversation existed"
                                                                                                                                                            Conversation),
                                                                                                                                                       WithHeaders
                                                                                                                                                         ConversationHeaders
                                                                                                                                                         Conversation
                                                                                                                                                         (VersionedRespond
                                                                                                                                                            'V2
                                                                                                                                                            201
                                                                                                                                                            "Conversation created"
                                                                                                                                                            Conversation)]
                                                                                                                                                     (ResponseForExistedCreated
                                                                                                                                                        Conversation))))))
                                                                                                                             :<|> (Named
                                                                                                                                     "create-self-conversation@v5"
                                                                                                                                     (Summary
                                                                                                                                        "Create a self-conversation"
                                                                                                                                      :> (From
                                                                                                                                            'V3
                                                                                                                                          :> (Until
                                                                                                                                                'V6
                                                                                                                                              :> (ZLocalUser
                                                                                                                                                  :> ("conversations"
                                                                                                                                                      :> ("self"
                                                                                                                                                          :> MultiVerb
                                                                                                                                                               'POST
                                                                                                                                                               '[JSON]
                                                                                                                                                               '[WithHeaders
                                                                                                                                                                   ConversationHeaders
                                                                                                                                                                   Conversation
                                                                                                                                                                   (VersionedRespond
                                                                                                                                                                      'V5
                                                                                                                                                                      200
                                                                                                                                                                      "Conversation existed"
                                                                                                                                                                      Conversation),
                                                                                                                                                                 WithHeaders
                                                                                                                                                                   ConversationHeaders
                                                                                                                                                                   Conversation
                                                                                                                                                                   (VersionedRespond
                                                                                                                                                                      'V5
                                                                                                                                                                      201
                                                                                                                                                                      "Conversation created"
                                                                                                                                                                      Conversation)]
                                                                                                                                                               (ResponseForExistedCreated
                                                                                                                                                                  Conversation)))))))
                                                                                                                                   :<|> (Named
                                                                                                                                           "create-self-conversation"
                                                                                                                                           (Summary
                                                                                                                                              "Create a self-conversation"
                                                                                                                                            :> (From
                                                                                                                                                  'V6
                                                                                                                                                :> (ZLocalUser
                                                                                                                                                    :> ("conversations"
                                                                                                                                                        :> ("self"
                                                                                                                                                            :> MultiVerb
                                                                                                                                                                 'POST
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 '[WithHeaders
                                                                                                                                                                     ConversationHeaders
                                                                                                                                                                     Conversation
                                                                                                                                                                     (VersionedRespond
                                                                                                                                                                        'V6
                                                                                                                                                                        200
                                                                                                                                                                        "Conversation existed"
                                                                                                                                                                        Conversation),
                                                                                                                                                                   WithHeaders
                                                                                                                                                                     ConversationHeaders
                                                                                                                                                                     Conversation
                                                                                                                                                                     (VersionedRespond
                                                                                                                                                                        'V6
                                                                                                                                                                        201
                                                                                                                                                                        "Conversation created"
                                                                                                                                                                        Conversation)]
                                                                                                                                                                 (ResponseForExistedCreated
                                                                                                                                                                    Conversation))))))
                                                                                                                                         :<|> (Named
                                                                                                                                                 "get-mls-self-conversation@v5"
                                                                                                                                                 (Summary
                                                                                                                                                    "Get the user's MLS self-conversation"
                                                                                                                                                  :> (From
                                                                                                                                                        'V5
                                                                                                                                                      :> (Until
                                                                                                                                                            'V6
                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                              :> ("conversations"
                                                                                                                                                                  :> ("mls-self"
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'MLSNotEnabled
                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                               'GET
                                                                                                                                                                               '[JSON]
                                                                                                                                                                               '[VersionedRespond
                                                                                                                                                                                   'V5
                                                                                                                                                                                   200
                                                                                                                                                                                   "The MLS self-conversation"
                                                                                                                                                                                   Conversation]
                                                                                                                                                                               Conversation)))))))
                                                                                                                                               :<|> (Named
                                                                                                                                                       "get-mls-self-conversation"
                                                                                                                                                       (Summary
                                                                                                                                                          "Get the user's MLS self-conversation"
                                                                                                                                                        :> (From
                                                                                                                                                              'V6
                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                :> ("conversations"
                                                                                                                                                                    :> ("mls-self"
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'MLSNotEnabled
                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                 'GET
                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                 '[Respond
                                                                                                                                                                                     200
                                                                                                                                                                                     "The MLS self-conversation"
                                                                                                                                                                                     Conversation]
                                                                                                                                                                                 Conversation))))))
                                                                                                                                                     :<|> (Named
                                                                                                                                                             "get-subconversation"
                                                                                                                                                             (Summary
                                                                                                                                                                "Get information about an MLS subconversation"
                                                                                                                                                              :> (From
                                                                                                                                                                    'V5
                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                        'Galley
                                                                                                                                                                        "get-sub-conversation"
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    'MLSSubConvUnsupportedConvType
                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                          :> (QualifiedCapture
                                                                                                                                                                                                "cnv"
                                                                                                                                                                                                ConvId
                                                                                                                                                                                              :> ("subconversations"
                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                        "subconv"
                                                                                                                                                                                                        SubConvId
                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                           'GET
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           '[Respond
                                                                                                                                                                                                               200
                                                                                                                                                                                                               "Subconversation"
                                                                                                                                                                                                               PublicSubConversation]
                                                                                                                                                                                                           PublicSubConversation)))))))))))
                                                                                                                                                           :<|> (Named
                                                                                                                                                                   "leave-subconversation"
                                                                                                                                                                   (Summary
                                                                                                                                                                      "Leave an MLS subconversation"
                                                                                                                                                                    :> (From
                                                                                                                                                                          'V5
                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                              'Galley
                                                                                                                                                                              "on-mls-message-sent"
                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                  'Galley
                                                                                                                                                                                  "leave-sub-conversation"
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'MLSProtocolErrorTag
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'MLSStaleMessage
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'MLSNotEnabled
                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                        :> (ZClient
                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                :> (QualifiedCapture
                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                    :> ("subconversations"
                                                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                                                              "subconv"
                                                                                                                                                                                                                              SubConvId
                                                                                                                                                                                                                            :> ("self"
                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                     'DELETE
                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                     '[RespondEmpty
                                                                                                                                                                                                                                         200
                                                                                                                                                                                                                                         "OK"]
                                                                                                                                                                                                                                     ()))))))))))))))))
                                                                                                                                                                 :<|> (Named
                                                                                                                                                                         "delete-subconversation"
                                                                                                                                                                         (Summary
                                                                                                                                                                            "Delete an MLS subconversation"
                                                                                                                                                                          :> (From
                                                                                                                                                                                'V5
                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                    'Galley
                                                                                                                                                                                    "delete-sub-conversation"
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'ConvAccessDenied
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'MLSNotEnabled
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'MLSStaleMessage
                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                                          :> (QualifiedCapture
                                                                                                                                                                                                                "cnv"
                                                                                                                                                                                                                ConvId
                                                                                                                                                                                                              :> ("subconversations"
                                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                                        "subconv"
                                                                                                                                                                                                                        SubConvId
                                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                            DeleteSubConversationRequest
                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                               'DELETE
                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                               '[Respond
                                                                                                                                                                                                                                   200
                                                                                                                                                                                                                                   "Deletion successful"
                                                                                                                                                                                                                                   ()]
                                                                                                                                                                                                                               ())))))))))))))
                                                                                                                                                                       :<|> (Named
                                                                                                                                                                               "get-subconversation-group-info"
                                                                                                                                                                               (Summary
                                                                                                                                                                                  "Get MLS group information of subconversation"
                                                                                                                                                                                :> (From
                                                                                                                                                                                      'V5
                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                          'Galley
                                                                                                                                                                                          "query-group-info"
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'MLSMissingGroupInfo
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'MLSNotEnabled
                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                            :> (QualifiedCapture
                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                :> ("subconversations"
                                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                                          "subconv"
                                                                                                                                                                                                                          SubConvId
                                                                                                                                                                                                                        :> ("groupinfo"
                                                                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                                                                 'GET
                                                                                                                                                                                                                                 '[MLS]
                                                                                                                                                                                                                                 '[Respond
                                                                                                                                                                                                                                     200
                                                                                                                                                                                                                                     "The group information"
                                                                                                                                                                                                                                     GroupInfoData]
                                                                                                                                                                                                                                 GroupInfoData))))))))))))
                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                     "create-one-to-one-conversation@v2"
                                                                                                                                                                                     (Summary
                                                                                                                                                                                        "Create a 1:1 conversation"
                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                            'Brig
                                                                                                                                                                                            "api-version"
                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                'Galley
                                                                                                                                                                                                "on-conversation-created"
                                                                                                                                                                                              :> (Until
                                                                                                                                                                                                    'V3
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'ConvAccessDenied
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            'InvalidOperation
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                'NoBindingTeamMembers
                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                    'NonBindingTeam
                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            'NotConnected
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        'MissingLegalholdConsent
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            UnreachableBackendsLegacy
                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                      :> ("one2one"
                                                                                                                                                                                                                                                          :> (VersionedReqBody
                                                                                                                                                                                                                                                                'V2
                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                NewConv
                                                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                                                   'POST
                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                   '[WithHeaders
                                                                                                                                                                                                                                                                       ConversationHeaders
                                                                                                                                                                                                                                                                       Conversation
                                                                                                                                                                                                                                                                       (VersionedRespond
                                                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                                                          200
                                                                                                                                                                                                                                                                          "Conversation existed"
                                                                                                                                                                                                                                                                          Conversation),
                                                                                                                                                                                                                                                                     WithHeaders
                                                                                                                                                                                                                                                                       ConversationHeaders
                                                                                                                                                                                                                                                                       Conversation
                                                                                                                                                                                                                                                                       (VersionedRespond
                                                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                                                          201
                                                                                                                                                                                                                                                                          "Conversation created"
                                                                                                                                                                                                                                                                          Conversation)]
                                                                                                                                                                                                                                                                   (ResponseForExistedCreated
                                                                                                                                                                                                                                                                      Conversation))))))))))))))))))))
                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                           "create-one-to-one-conversation"
                                                                                                                                                                                           (Summary
                                                                                                                                                                                              "Create a 1:1 conversation"
                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                  "on-conversation-created"
                                                                                                                                                                                                :> (From
                                                                                                                                                                                                      'V3
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                  'NoBindingTeamMembers
                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                      'NonBindingTeam
                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              'NotConnected
                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                          'MissingLegalholdConsent
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              UnreachableBackendsLegacy
                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                        :> ("one2one"
                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                  NewConv
                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                     '[WithHeaders
                                                                                                                                                                                                                                                                         ConversationHeaders
                                                                                                                                                                                                                                                                         Conversation
                                                                                                                                                                                                                                                                         (VersionedRespond
                                                                                                                                                                                                                                                                            'V3
                                                                                                                                                                                                                                                                            200
                                                                                                                                                                                                                                                                            "Conversation existed"
                                                                                                                                                                                                                                                                            Conversation),
                                                                                                                                                                                                                                                                       WithHeaders
                                                                                                                                                                                                                                                                         ConversationHeaders
                                                                                                                                                                                                                                                                         Conversation
                                                                                                                                                                                                                                                                         (VersionedRespond
                                                                                                                                                                                                                                                                            'V3
                                                                                                                                                                                                                                                                            201
                                                                                                                                                                                                                                                                            "Conversation created"
                                                                                                                                                                                                                                                                            Conversation)]
                                                                                                                                                                                                                                                                     (ResponseForExistedCreated
                                                                                                                                                                                                                                                                        Conversation)))))))))))))))))))
                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                 "get-one-to-one-mls-conversation@v5"
                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                    "Get an MLS 1:1 conversation"
                                                                                                                                                                                                  :> (From
                                                                                                                                                                                                        'V5
                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                            'V6
                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                    'MLSNotEnabled
                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                        'NotConnected
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            'MLSFederatedOne2OneNotSupported
                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                              :> ("one2one"
                                                                                                                                                                                                                                  :> (QualifiedCapture
                                                                                                                                                                                                                                        "usr"
                                                                                                                                                                                                                                        UserId
                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                           'GET
                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                           '[VersionedRespond
                                                                                                                                                                                                                                               'V5
                                                                                                                                                                                                                                               200
                                                                                                                                                                                                                                               "MLS 1-1 conversation"
                                                                                                                                                                                                                                               Conversation]
                                                                                                                                                                                                                                           Conversation))))))))))
                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                       "get-one-to-one-mls-conversation@v6"
                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                          "Get an MLS 1:1 conversation"
                                                                                                                                                                                                        :> (From
                                                                                                                                                                                                              'V6
                                                                                                                                                                                                            :> (Until
                                                                                                                                                                                                                  'V7
                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                          'MLSNotEnabled
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              'NotConnected
                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                :> ("one2one"
                                                                                                                                                                                                                                    :> (QualifiedCapture
                                                                                                                                                                                                                                          "usr"
                                                                                                                                                                                                                                          UserId
                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                             'GET
                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                             '[Respond
                                                                                                                                                                                                                                                 200
                                                                                                                                                                                                                                                 "MLS 1-1 conversation"
                                                                                                                                                                                                                                                 (MLSOne2OneConversation
                                                                                                                                                                                                                                                    MLSPublicKey)]
                                                                                                                                                                                                                                             (MLSOne2OneConversation
                                                                                                                                                                                                                                                MLSPublicKey))))))))))
                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                             "get-one-to-one-mls-conversation"
                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                "Get an MLS 1:1 conversation"
                                                                                                                                                                                                              :> (From
                                                                                                                                                                                                                    'V7
                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            'MLSNotEnabled
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                'NotConnected
                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                  :> ("one2one"
                                                                                                                                                                                                                                      :> (QualifiedCapture
                                                                                                                                                                                                                                            "usr"
                                                                                                                                                                                                                                            UserId
                                                                                                                                                                                                                                          :> (QueryParam
                                                                                                                                                                                                                                                "format"
                                                                                                                                                                                                                                                MLSPublicKeyFormat
                                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                                   'GET
                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                   '[Respond
                                                                                                                                                                                                                                                       200
                                                                                                                                                                                                                                                       "MLS 1-1 conversation"
                                                                                                                                                                                                                                                       (MLSOne2OneConversation
                                                                                                                                                                                                                                                          SomeKey)]
                                                                                                                                                                                                                                                   (MLSOne2OneConversation
                                                                                                                                                                                                                                                      SomeKey))))))))))
                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                   "add-members-to-conversation-unqualified"
                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                      "Add members to an existing conversation (deprecated)"
                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                          "on-conversation-updated"
                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                              "on-mls-message-sent"
                                                                                                                                                                                                                            :> (Until
                                                                                                                                                                                                                                  'V2
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      ('ActionDenied
                                                                                                                                                                                                                                         'AddConversationMember)
                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                             'LeaveConversation)
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                  'InvalidOperation
                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                      'TooManyMembers
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'NotConnected
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'MissingLegalholdConsent
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          NonFederatingBackends
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              UnreachableBackends
                                                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                                                                                                                              "cnv"
                                                                                                                                                                                                                                                                                              ConvId
                                                                                                                                                                                                                                                                                            :> ("members"
                                                                                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                      Invite
                                                                                                                                                                                                                                                                                                    :> MultiVerb
                                                                                                                                                                                                                                                                                                         'POST
                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                         ConvUpdateResponses
                                                                                                                                                                                                                                                                                                         (UpdateResult
                                                                                                                                                                                                                                                                                                            Event))))))))))))))))))))))
                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                         "add-members-to-conversation-unqualified2"
                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                            "Add qualified members to an existing conversation."
                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                "on-conversation-updated"
                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                    "on-mls-message-sent"
                                                                                                                                                                                                                                  :> (Until
                                                                                                                                                                                                                                        'V2
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                               'AddConversationMember)
                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                ('ActionDenied
                                                                                                                                                                                                                                                   'LeaveConversation)
                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                        'InvalidOperation
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'TooManyMembers
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        'NotConnected
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'MissingLegalholdConsent
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                NonFederatingBackends
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    UnreachableBackends
                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                  :> ("members"
                                                                                                                                                                                                                                                                                                      :> ("v2"
                                                                                                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                                                InviteQualified
                                                                                                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                                                                                                   'POST
                                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                                   ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                   (UpdateResult
                                                                                                                                                                                                                                                                                                                      Event)))))))))))))))))))))))
                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                               "add-members-to-conversation"
                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                  "Add qualified members to an existing conversation."
                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                      "on-conversation-updated"
                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                          "on-mls-message-sent"
                                                                                                                                                                                                                                        :> (From
                                                                                                                                                                                                                                              'V2
                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                  ('ActionDenied
                                                                                                                                                                                                                                                     'AddConversationMember)
                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                      ('ActionDenied
                                                                                                                                                                                                                                                         'LeaveConversation)
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'TooManyMembers
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'ConvAccessDenied
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'NotConnected
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'MissingLegalholdConsent
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      NonFederatingBackends
                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                          UnreachableBackends
                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                    :> (QualifiedCapture
                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                        :> ("members"
                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                  InviteQualified
                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                     ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                     (UpdateResult
                                                                                                                                                                                                                                                                                                                        Event))))))))))))))))))))))
                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                     "join-conversation-by-id-unqualified"
                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                        "Join a conversation by its ID (if link access enabled) (deprecated)"
                                                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                                                            'V5
                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                "on-conversation-updated"
                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                    'ConvAccessDenied
                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'InvalidOperation
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'TooManyMembers
                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                  :> ("join"
                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                           'POST
                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                           ConvJoinResponses
                                                                                                                                                                                                                                                                                           (UpdateResult
                                                                                                                                                                                                                                                                                              Event))))))))))))))
                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                           "join-conversation-by-code-unqualified"
                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                              "Join a conversation using a reusable code"
                                                                                                                                                                                                                                            :> (Description
                                                                                                                                                                                                                                                  "If the guest links team feature is disabled, this will fail with 409 GuestLinksDisabled.Note that this is currently inconsistent (for backwards compatibility reasons) with `POST /conversations/code-check` which responds with 404 CodeNotFound if guest links are disabled."
                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                      "on-conversation-updated"
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'CodeNotFound
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'InvalidConversationPassword
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          'GuestLinksDisabled
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      'TooManyMembers
                                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                                        :> (ZConn
                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                :> ("join"
                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                          JoinConversationByCode
                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                             'POST
                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                             ConvJoinResponses
                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                Event)))))))))))))))))
                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                 "code-check"
                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                    "Check validity of a conversation code."
                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                        "If the guest links team feature is disabled, this will fail with 404 CodeNotFound.Note that this is currently inconsistent (for backwards compatibility reasons) with `POST /conversations/join` which responds with 409 GuestLinksDisabled if guest links are disabled."
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'CodeNotFound
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'InvalidConversationPassword
                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                      :> ("code-check"
                                                                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                ConversationCode
                                                                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                                                                   'POST
                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                   '[RespondEmpty
                                                                                                                                                                                                                                                                                       200
                                                                                                                                                                                                                                                                                       "Valid"]
                                                                                                                                                                                                                                                                                   ()))))))))
                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                       "create-conversation-code-unqualified@v3"
                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                          "Create or recreate a conversation code"
                                                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                                                              'V4
                                                                                                                                                                                                                                                            :> (DescriptionOAuthScope
                                                                                                                                                                                                                                                                  'WriteConversationsCode
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'ConvAccessDenied
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'GuestLinksDisabled
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'CreateConversationCodeConflict
                                                                                                                                                                                                                                                                                :> (ZUser
                                                                                                                                                                                                                                                                                    :> (ZHostOpt
                                                                                                                                                                                                                                                                                        :> (ZOptConn
                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                :> (Capture'
                                                                                                                                                                                                                                                                                                      '[Description
                                                                                                                                                                                                                                                                                                          "Conversation ID"]
                                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                                    :> ("code"
                                                                                                                                                                                                                                                                                                        :> CreateConversationCodeVerb)))))))))))))
                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                             "create-conversation-code-unqualified"
                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                "Create or recreate a conversation code"
                                                                                                                                                                                                                                                              :> (From
                                                                                                                                                                                                                                                                    'V4
                                                                                                                                                                                                                                                                  :> (DescriptionOAuthScope
                                                                                                                                                                                                                                                                        'WriteConversationsCode
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'ConvAccessDenied
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    'GuestLinksDisabled
                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                        'CreateConversationCodeConflict
                                                                                                                                                                                                                                                                                      :> (ZUser
                                                                                                                                                                                                                                                                                          :> (ZHostOpt
                                                                                                                                                                                                                                                                                              :> (ZOptConn
                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                      :> (Capture'
                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                          :> ("code"
                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                    CreateConversationCodeRequest
                                                                                                                                                                                                                                                                                                                  :> CreateConversationCodeVerb))))))))))))))
                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                   "get-conversation-guest-links-status"
                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                      "Get the status of the guest links feature for a conversation that potentially has been created by someone from another team."
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                                                                                                            :> (ZUser
                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                    :> (Capture'
                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                                                                                                                            :> ("conversationGuestLinks"
                                                                                                                                                                                                                                                                                                :> Get
                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                                                                                        GuestLinksConfig)))))))))
                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                         "remove-code-unqualified"
                                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                                            "Delete conversation code"
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                  :> ("code"
                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                           'DELETE
                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                           '[Respond
                                                                                                                                                                                                                                                                                                               200
                                                                                                                                                                                                                                                                                                               "Conversation code deleted."
                                                                                                                                                                                                                                                                                                               Event]
                                                                                                                                                                                                                                                                                                           Event))))))))
                                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                                               "get-code"
                                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                                  "Get existing conversation code"
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      'CodeNotFound
                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                  'GuestLinksDisabled
                                                                                                                                                                                                                                                                                                :> (ZHostOpt
                                                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                            :> (Capture'
                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                :> ("code"
                                                                                                                                                                                                                                                                                                                    :> MultiVerb
                                                                                                                                                                                                                                                                                                                         'GET
                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                         '[Respond
                                                                                                                                                                                                                                                                                                                             200
                                                                                                                                                                                                                                                                                                                             "Conversation Code"
                                                                                                                                                                                                                                                                                                                             ConversationCodeInfo]
                                                                                                                                                                                                                                                                                                                         ConversationCodeInfo))))))))))
                                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                                     "member-typing-unqualified"
                                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                                        "Sending typing notifications"
                                                                                                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                                                                                                            'V3
                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                "update-typing-indicator"
                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                    "on-typing-indicator-updated"
                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                                                                                                                          :> (ZConn
                                                                                                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                                                                                                  :> (Capture'
                                                                                                                                                                                                                                                                                                                        '[Description
                                                                                                                                                                                                                                                                                                                            "Conversation ID"]
                                                                                                                                                                                                                                                                                                                        "cnv"
                                                                                                                                                                                                                                                                                                                        ConvId
                                                                                                                                                                                                                                                                                                                      :> ("typing"
                                                                                                                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                                                                TypingStatus
                                                                                                                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                                                                                                                   'POST
                                                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                                                   '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                       200
                                                                                                                                                                                                                                                                                                                                       "Notification sent"]
                                                                                                                                                                                                                                                                                                                                   ())))))))))))
                                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                                           "member-typing-qualified"
                                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                                              "Sending typing notifications"
                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                  "update-typing-indicator"
                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                      "on-typing-indicator-updated"
                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                    :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                        :> ("typing"
                                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                  TypingStatus
                                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                     '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                         200
                                                                                                                                                                                                                                                                                                                                         "Notification sent"]
                                                                                                                                                                                                                                                                                                                                     ()))))))))))
                                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                                 "remove-member-unqualified"
                                                                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                                                                    "Remove a member from a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                        "leave-conversation"
                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                            "on-conversation-updated"
                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                    'Brig
                                                                                                                                                                                                                                                                                                                    "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                  :> (Until
                                                                                                                                                                                                                                                                                                                        'V2
                                                                                                                                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                          :> (ZConn
                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                    ('ActionDenied
                                                                                                                                                                                                                                                                                                                                       'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                            'InvalidOperation
                                                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                  :> ("members"
                                                                                                                                                                                                                                                                                                                                                      :> (Capture'
                                                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                                                "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                            "usr"
                                                                                                                                                                                                                                                                                                                                                            UserId
                                                                                                                                                                                                                                                                                                                                                          :> RemoveFromConversationVerb)))))))))))))))
                                                                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                                                                       "remove-member"
                                                                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                                                                          "Remove a member from a conversation"
                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                              "leave-conversation"
                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                  "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                                      "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                          'Brig
                                                                                                                                                                                                                                                                                                                          "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                      ('ActionDenied
                                                                                                                                                                                                                                                                                                                                         'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                      '[Description
                                                                                                                                                                                                                                                                                                                                                          "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                                                                                    :> ("members"
                                                                                                                                                                                                                                                                                                                                                        :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                              '[Description
                                                                                                                                                                                                                                                                                                                                                                  "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                              "usr"
                                                                                                                                                                                                                                                                                                                                                              UserId
                                                                                                                                                                                                                                                                                                                                                            :> RemoveFromConversationVerb))))))))))))))
                                                                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                                                                             "update-other-member-unqualified"
                                                                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                                                                "Update membership of the specified user (deprecated)"
                                                                                                                                                                                                                                                                                                              :> (Deprecated
                                                                                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                                                                                        "Use `PUT /conversations/:cnv_domain/:cnv/members/:usr_domain/:usr` instead"
                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                            "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                    'Brig
                                                                                                                                                                                                                                                                                                                                    "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                    'ConvMemberNotFound
                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                           'ModifyOtherConversationMember)
                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                            'InvalidTarget
                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                  :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                        '[Description
                                                                                                                                                                                                                                                                                                                                                                            "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                        "cnv"
                                                                                                                                                                                                                                                                                                                                                                        ConvId
                                                                                                                                                                                                                                                                                                                                                                      :> ("members"
                                                                                                                                                                                                                                                                                                                                                                          :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                '[Description
                                                                                                                                                                                                                                                                                                                                                                                    "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                                "usr"
                                                                                                                                                                                                                                                                                                                                                                                UserId
                                                                                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                    OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                       'PUT
                                                                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                       '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                           200
                                                                                                                                                                                                                                                                                                                                                                                           "Membership updated"]
                                                                                                                                                                                                                                                                                                                                                                                       ()))))))))))))))))))
                                                                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                                                                   "update-other-member"
                                                                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                                                                      "Update membership of the specified user"
                                                                                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                                                                                          "**Note**: at least one field has to be provided."
                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                              "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                                  "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                      'Brig
                                                                                                                                                                                                                                                                                                                                      "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                        :> (ZConn
                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                  'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                      'ConvMemberNotFound
                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                             'ModifyOtherConversationMember)
                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                              'InvalidTarget
                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                  'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                    :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                                                                        :> ("members"
                                                                                                                                                                                                                                                                                                                                                                            :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                      "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                                  "usr"
                                                                                                                                                                                                                                                                                                                                                                                  UserId
                                                                                                                                                                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                      OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                    :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                         'PUT
                                                                                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                         '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                             200
                                                                                                                                                                                                                                                                                                                                                                                             "Membership updated"]
                                                                                                                                                                                                                                                                                                                                                                                         ())))))))))))))))))
                                                                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                                                                         "update-conversation-name-deprecated"
                                                                                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                                                                                            "Update conversation name (deprecated)"
                                                                                                                                                                                                                                                                                                                          :> (Deprecated
                                                                                                                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                                                                                                                    "Use `/conversations/:domain/:conv/name` instead."
                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                                                        "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                            "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                'Brig
                                                                                                                                                                                                                                                                                                                                                "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                    ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                       'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                            'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                      :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                ConversationRename
                                                                                                                                                                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                   'PUT
                                                                                                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                   (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                      "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                      "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                      Event)
                                                                                                                                                                                                                                                                                                                                                                                   (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                      Event)))))))))))))))
                                                                                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                                                                                               "update-conversation-name-unqualified"
                                                                                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                                                                                  "Update conversation name (deprecated)"
                                                                                                                                                                                                                                                                                                                                :> (Deprecated
                                                                                                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                                                                                                          "Use `/conversations/:domain/:conv/name` instead."
                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                              "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                                                  "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                      'Brig
                                                                                                                                                                                                                                                                                                                                                      "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                             'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                  'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                            :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                :> ("name"
                                                                                                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                          ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                Event))))))))))))))))
                                                                                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                                                                                     "update-conversation-name"
                                                                                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                                                                                        "Update conversation name"
                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                            "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                    'Brig
                                                                                                                                                                                                                                                                                                                                                    "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                           'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                  :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                          :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                '[Description
                                                                                                                                                                                                                                                                                                                                                                                    "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                "cnv"
                                                                                                                                                                                                                                                                                                                                                                                ConvId
                                                                                                                                                                                                                                                                                                                                                                              :> ("name"
                                                                                                                                                                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                        ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                           'PUT
                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                           (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                              "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                              "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                              Event)
                                                                                                                                                                                                                                                                                                                                                                                           (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                              Event))))))))))))))
                                                                                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                                                                                           "update-conversation-message-timer-unqualified"
                                                                                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                                                                                              "Update the message timer for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                            :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                :> (Description
                                                                                                                                                                                                                                                                                                                                                      "Use `/conversations/:domain/:cnv/message-timer` instead."
                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                                          "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                                              "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                  'Brig
                                                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                 'ModifyConversationMessageTimer)
                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                          'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                            :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                                :> ("message-timer"
                                                                                                                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                          ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                "Message timer unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                "Message timer updated"
                                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                Event)))))))))))))))))
                                                                                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                                                                                 "update-conversation-message-timer"
                                                                                                                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                                                                                                                    "Update the message timer for a conversation"
                                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                                                                        "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                                            "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                'Brig
                                                                                                                                                                                                                                                                                                                                                                "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                  :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                               'ModifyConversationMessageTimer)
                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                        'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                          :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                '[Description
                                                                                                                                                                                                                                                                                                                                                                                                    "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                ConvId
                                                                                                                                                                                                                                                                                                                                                                                              :> ("message-timer"
                                                                                                                                                                                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                        ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                           'PUT
                                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                           (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                              "Message timer unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                              "Message timer updated"
                                                                                                                                                                                                                                                                                                                                                                                                              Event)
                                                                                                                                                                                                                                                                                                                                                                                                           (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                              Event)))))))))))))))
                                                                                                                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                                                                                                                       "update-conversation-receipt-mode-unqualified"
                                                                                                                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                                                                                                                          "Update receipt mode for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                                        :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                            :> (Description
                                                                                                                                                                                                                                                                                                                                                                  "Use `PUT /conversations/:domain/:cnv/receipt-mode` instead."
                                                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                                                                                      "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                                                          "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                                                              "update-conversation"
                                                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                  'Brig
                                                                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                 'ModifyConversationReceiptMode)
                                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                          'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                            :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                :> ("receipt-mode"
                                                                                                                                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                          ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                "Receipt mode unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                "Receipt mode updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                                                                                                                             "update-conversation-receipt-mode"
                                                                                                                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                                                                                                                "Update receipt mode for a conversation"
                                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                                                                                    "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                                                                                        "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                                                            "update-conversation"
                                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                'Brig
                                                                                                                                                                                                                                                                                                                                                                                "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                  :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                               'ModifyConversationReceiptMode)
                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                        'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                          :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                    "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                ConvId
                                                                                                                                                                                                                                                                                                                                                                                                              :> ("receipt-mode"
                                                                                                                                                                                                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                        ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                           'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                           (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                              "Receipt mode unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                              "Receipt mode updated"
                                                                                                                                                                                                                                                                                                                                                                                                                              Event)
                                                                                                                                                                                                                                                                                                                                                                                                                           (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                              Event))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                   "update-conversation-access-unqualified"
                                                                                                                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                                                                                                                      "Update access modes for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                                                          "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                                                              "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                  'Brig
                                                                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                :> (Until
                                                                                                                                                                                                                                                                                                                                                                                      'V3
                                                                                                                                                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                                                                                                                                                          "Use PUT `/conversations/:domain/:cnv/access` instead."
                                                                                                                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                      ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                         'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                             'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                              'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                  'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                      'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                          'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                            :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                    :> (VersionedReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                          ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                Event)))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                         "update-conversation-access@v2"
                                                                                                                                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                                                                                                                                            "Update access modes for a conversation"
                                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                                                                "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                                                                                                    "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                        'Brig
                                                                                                                                                                                                                                                                                                                                                                                        "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                                                                                                                                                                                                            'V3
                                                                                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                           'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                               'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                        'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                            'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                              :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                  :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                      :> (VersionedReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                            ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                               'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                  "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                  "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                               "update-conversation-access"
                                                                                                                                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                                                                                                                                  "Update access modes for a conversation"
                                                                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                                                                                                      "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                                                                          "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                              'Brig
                                                                                                                                                                                                                                                                                                                                                                                              "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                            :> (From
                                                                                                                                                                                                                                                                                                                                                                                                  'V3
                                                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                 'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                  ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                     'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                      'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                  'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                    :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                        :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                  ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                     'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                     (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                        "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                        "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                        Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                                     (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                        Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                     "get-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                                                                                                                                        "Get self membership properties (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                                      :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                  :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                        '[Description
                                                                                                                                                                                                                                                                                                                                                                                                            "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                        "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                        ConvId
                                                                                                                                                                                                                                                                                                                                                                                                      :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                               (Maybe
                                                                                                                                                                                                                                                                                                                                                                                                                  Member)))))))
                                                                                                                                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                           "update-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                                                                                                                                              "Update self membership properties (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                                            :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                                                                :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                      "Use `/conversations/:domain/:conv/self` instead."
                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                    :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                        :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                  MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                     'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                     '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                                                                         200
                                                                                                                                                                                                                                                                                                                                                                                                                                         "Update successful"]
                                                                                                                                                                                                                                                                                                                                                                                                                                     ()))))))))))
                                                                                                                                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                                 "update-conversation-self"
                                                                                                                                                                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                                                                                                                                                                    "Update self membership properties"
                                                                                                                                                                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                        "**Note**: at least one field has to be provided."
                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                          :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                    MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                       'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                       '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                                                                           200
                                                                                                                                                                                                                                                                                                                                                                                                                                           "Update successful"]
                                                                                                                                                                                                                                                                                                                                                                                                                                       ())))))))))
                                                                                                                                                                                                                                                                                                                                                                                               :<|> Named
                                                                                                                                                                                                                                                                                                                                                                                                      "update-conversation-protocol"
                                                                                                                                                                                                                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                                                                                                                                                                                                                         "Update the protocol of the conversation"
                                                                                                                                                                                                                                                                                                                                                                                                       :> (From
                                                                                                                                                                                                                                                                                                                                                                                                             'V5
                                                                                                                                                                                                                                                                                                                                                                                                           :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                                 "**Note**: Only proteus->mixed upgrade is supported."
                                                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                     'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                         'ConvInvalidProtocolTransition
                                                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                             ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                                'LeaveConversation)
                                                                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                 'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                     'MLSMigrationCriteriaNotSatisfied
                                                                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                             OperationDenied
                                                                                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                                               :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                                                                   :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                                                       :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                                           :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                                               :> ("protocol"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ProtocolUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                                                       :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Event))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
    :<|> (TeamConversationAPI
          :<|> ((Named
                   "post-otr-message-unqualified"
                   (Summary
                      "Post an encrypted message to a conversation (accepts JSON or Protobuf)"
                    :> (Description PostOtrDescriptionUnqualified
                        :> (MakesFederatedCall 'Galley "on-message-sent"
                            :> (MakesFederatedCall 'Brig "get-user-clients"
                                :> (ZLocalUser
                                    :> (ZConn
                                        :> ("conversations"
                                            :> (Capture "cnv" ConvId
                                                :> ("otr"
                                                    :> ("messages"
                                                        :> (QueryParam
                                                              "ignore_missing" IgnoreMissing
                                                            :> (QueryParam
                                                                  "report_missing" ReportMissing
                                                                :> (ReqBody
                                                                      '[JSON, Proto] NewOtrMessage
                                                                    :> MultiVerb
                                                                         'POST
                                                                         '[JSON]
                                                                         '[ErrorResponse
                                                                             'ConvNotFound,
                                                                           ErrorResponse
                                                                             'UnknownClient,
                                                                           ErrorResponse
                                                                             'MissingLegalholdConsentOldClients,
                                                                           ErrorResponse
                                                                             'MissingLegalholdConsent,
                                                                           Respond
                                                                             412
                                                                             "Missing clients"
                                                                             ClientMismatch,
                                                                           Respond
                                                                             201
                                                                             "Message sent"
                                                                             ClientMismatch]
                                                                         (PostOtrResponse
                                                                            ClientMismatch))))))))))))))
                 :<|> (Named
                         "post-otr-broadcast-unqualified"
                         (Summary
                            "Broadcast an encrypted message to all team members and all contacts (accepts JSON or Protobuf)"
                          :> (Description PostOtrDescriptionUnqualified
                              :> (ZLocalUser
                                  :> (ZConn
                                      :> (CanThrow 'TeamNotFound
                                          :> (CanThrow 'BroadcastLimitExceeded
                                              :> (CanThrow 'NonBindingTeam
                                                  :> ("broadcast"
                                                      :> ("otr"
                                                          :> ("messages"
                                                              :> (QueryParam
                                                                    "ignore_missing" IgnoreMissing
                                                                  :> (QueryParam
                                                                        "report_missing"
                                                                        ReportMissing
                                                                      :> (ReqBody
                                                                            '[JSON, Proto]
                                                                            NewOtrMessage
                                                                          :> MultiVerb
                                                                               'POST
                                                                               '[JSON]
                                                                               '[ErrorResponse
                                                                                   'ConvNotFound,
                                                                                 ErrorResponse
                                                                                   'UnknownClient,
                                                                                 ErrorResponse
                                                                                   'MissingLegalholdConsentOldClients,
                                                                                 ErrorResponse
                                                                                   'MissingLegalholdConsent,
                                                                                 Respond
                                                                                   412
                                                                                   "Missing clients"
                                                                                   ClientMismatch,
                                                                                 Respond
                                                                                   201
                                                                                   "Message sent"
                                                                                   ClientMismatch]
                                                                               (PostOtrResponse
                                                                                  ClientMismatch))))))))))))))
                       :<|> (Named
                               "post-proteus-message"
                               (Summary
                                  "Post an encrypted message to a conversation (accepts only Protobuf)"
                                :> (Description PostOtrDescription
                                    :> (MakesFederatedCall 'Brig "get-user-clients"
                                        :> (MakesFederatedCall 'Galley "on-message-sent"
                                            :> (MakesFederatedCall 'Galley "send-message"
                                                :> (ZLocalUser
                                                    :> (ZConn
                                                        :> ("conversations"
                                                            :> (QualifiedCapture "cnv" ConvId
                                                                :> ("proteus"
                                                                    :> ("messages"
                                                                        :> (ReqBody
                                                                              '[Proto]
                                                                              (RawProto
                                                                                 QualifiedNewOtrMessage)
                                                                            :> MultiVerb
                                                                                 'POST
                                                                                 '[JSON]
                                                                                 '[ErrorResponse
                                                                                     'ConvNotFound,
                                                                                   ErrorResponse
                                                                                     'UnknownClient,
                                                                                   ErrorResponse
                                                                                     'MissingLegalholdConsentOldClients,
                                                                                   ErrorResponse
                                                                                     'MissingLegalholdConsent,
                                                                                   Respond
                                                                                     412
                                                                                     "Missing clients"
                                                                                     MessageSendingStatus,
                                                                                   Respond
                                                                                     201
                                                                                     "Message sent"
                                                                                     MessageSendingStatus]
                                                                                 (Either
                                                                                    (MessageNotSent
                                                                                       MessageSendingStatus)
                                                                                    MessageSendingStatus)))))))))))))
                             :<|> Named
                                    "post-proteus-broadcast"
                                    (Summary
                                       "Post an encrypted message to all team members and all contacts (accepts only Protobuf)"
                                     :> (Description PostOtrDescription
                                         :> (ZLocalUser
                                             :> (ZConn
                                                 :> (CanThrow 'TeamNotFound
                                                     :> (CanThrow 'BroadcastLimitExceeded
                                                         :> (CanThrow 'NonBindingTeam
                                                             :> ("broadcast"
                                                                 :> ("proteus"
                                                                     :> ("messages"
                                                                         :> (ReqBody
                                                                               '[Proto]
                                                                               QualifiedNewOtrMessage
                                                                             :> MultiVerb
                                                                                  'POST
                                                                                  '[JSON]
                                                                                  '[ErrorResponse
                                                                                      'ConvNotFound,
                                                                                    ErrorResponse
                                                                                      'UnknownClient,
                                                                                    ErrorResponse
                                                                                      'MissingLegalholdConsentOldClients,
                                                                                    ErrorResponse
                                                                                      'MissingLegalholdConsent,
                                                                                    Respond
                                                                                      412
                                                                                      "Missing clients"
                                                                                      MessageSendingStatus,
                                                                                    Respond
                                                                                      201
                                                                                      "Message sent"
                                                                                      MessageSendingStatus]
                                                                                  (Either
                                                                                     (MessageNotSent
                                                                                        MessageSendingStatus)
                                                                                     MessageSendingStatus)))))))))))))))
                :<|> ((Named
                         "post-bot-message-unqualified"
                         (MakesFederatedCall 'Galley "on-message-sent"
                          :> (MakesFederatedCall 'Brig "get-user-clients"
                              :> (ZBot
                                  :> (ZConversation
                                      :> (CanThrow 'ConvNotFound
                                          :> ("bot"
                                              :> ("messages"
                                                  :> (QueryParam "ignore_missing" IgnoreMissing
                                                      :> (QueryParam "report_missing" ReportMissing
                                                          :> (ReqBody '[JSON] NewOtrMessage
                                                              :> MultiVerb
                                                                   'POST
                                                                   '[JSON]
                                                                   '[ErrorResponse 'ConvNotFound,
                                                                     ErrorResponse 'UnknownClient,
                                                                     ErrorResponse
                                                                       'MissingLegalholdConsentOldClients,
                                                                     ErrorResponse
                                                                       'MissingLegalholdConsent,
                                                                     Respond
                                                                       412
                                                                       "Missing clients"
                                                                       ClientMismatch,
                                                                     Respond
                                                                       201
                                                                       "Message sent"
                                                                       ClientMismatch]
                                                                   (PostOtrResponse
                                                                      ClientMismatch)))))))))))
                       :<|> Named
                              "get-bot-conversation"
                              (CanThrow 'AccessDenied
                               :> (CanThrow 'ConvNotFound
                                   :> (CanThrow OperationDenied
                                       :> (CanThrow 'NotATeamMember
                                           :> (CanThrow 'TeamNotFound
                                               :> ("bot"
                                                   :> ("conversation"
                                                       :> (ZBot
                                                           :> (ZConversation
                                                               :> Get '[JSON] BotConvView))))))))))
                      :<|> (TeamAPI
                            :<|> ((Named
                                     '("get", SSOConfig)
                                     (Description ""
                                      :> (ZUser
                                          :> (Summary "Get config for sso"
                                              :> (CanThrow OperationDenied
                                                  :> (CanThrow 'NotATeamMember
                                                      :> (CanThrow 'TeamNotFound
                                                          :> ("teams"
                                                              :> (Capture "tid" TeamId
                                                                  :> ("features"
                                                                      :> ("sso"
                                                                          :> Get
                                                                               '[JSON]
                                                                               (LockableFeature
                                                                                  SSOConfig)))))))))))
                                   :<|> ((Named
                                            '("get", LegalholdConfig)
                                            (Description ""
                                             :> (ZUser
                                                 :> (Summary "Get config for legalhold"
                                                     :> (CanThrow OperationDenied
                                                         :> (CanThrow 'NotATeamMember
                                                             :> (CanThrow 'TeamNotFound
                                                                 :> ("teams"
                                                                     :> (Capture "tid" TeamId
                                                                         :> ("features"
                                                                             :> ("legalhold"
                                                                                 :> Get
                                                                                      '[JSON]
                                                                                      (LockableFeature
                                                                                         LegalholdConfig)))))))))))
                                          :<|> Named
                                                 '("put", LegalholdConfig)
                                                 (Description ""
                                                  :> (ZUser
                                                      :> (Summary "Put config for legalhold"
                                                          :> (CanThrow OperationDenied
                                                              :> (CanThrow 'NotATeamMember
                                                                  :> (CanThrow 'TeamNotFound
                                                                      :> (CanThrow TeamFeatureError
                                                                          :> (CanThrowMany
                                                                                '[ 'ActionDenied
                                                                                     'RemoveConversationMember,
                                                                                   'CannotEnableLegalHoldServiceLargeTeam,
                                                                                   'LegalHoldNotEnabled,
                                                                                   'LegalHoldDisableUnimplemented,
                                                                                   'LegalHoldServiceNotRegistered,
                                                                                   'UserLegalHoldIllegalOperation,
                                                                                   'LegalHoldCouldNotBlockConnections]
                                                                              :> ("teams"
                                                                                  :> (Capture
                                                                                        "tid" TeamId
                                                                                      :> ("features"
                                                                                          :> ("legalhold"
                                                                                              :> (ReqBody
                                                                                                    '[JSON]
                                                                                                    (Feature
                                                                                                       LegalholdConfig)
                                                                                                  :> Put
                                                                                                       '[JSON]
                                                                                                       (LockableFeature
                                                                                                          LegalholdConfig)))))))))))))))
                                         :<|> ((Named
                                                  '("get", SearchVisibilityAvailableConfig)
                                                  (Description ""
                                                   :> (ZUser
                                                       :> (Summary "Get config for searchVisibility"
                                                           :> (CanThrow OperationDenied
                                                               :> (CanThrow 'NotATeamMember
                                                                   :> (CanThrow 'TeamNotFound
                                                                       :> ("teams"
                                                                           :> (Capture "tid" TeamId
                                                                               :> ("features"
                                                                                   :> ("searchVisibility"
                                                                                       :> Get
                                                                                            '[JSON]
                                                                                            (LockableFeature
                                                                                               SearchVisibilityAvailableConfig)))))))))))
                                                :<|> Named
                                                       '("put", SearchVisibilityAvailableConfig)
                                                       (Description ""
                                                        :> (ZUser
                                                            :> (Summary
                                                                  "Put config for searchVisibility"
                                                                :> (CanThrow OperationDenied
                                                                    :> (CanThrow 'NotATeamMember
                                                                        :> (CanThrow 'TeamNotFound
                                                                            :> (CanThrow
                                                                                  TeamFeatureError
                                                                                :> (CanThrowMany '[]
                                                                                    :> ("teams"
                                                                                        :> (Capture
                                                                                              "tid"
                                                                                              TeamId
                                                                                            :> ("features"
                                                                                                :> ("searchVisibility"
                                                                                                    :> (ReqBody
                                                                                                          '[JSON]
                                                                                                          (Feature
                                                                                                             SearchVisibilityAvailableConfig)
                                                                                                        :> Put
                                                                                                             '[JSON]
                                                                                                             (LockableFeature
                                                                                                                SearchVisibilityAvailableConfig)))))))))))))))
                                               :<|> (SearchVisibilityGet
                                                     :<|> (SearchVisibilitySet
                                                           :<|> (Named
                                                                   '("get",
                                                                     ValidateSAMLEmailsConfig)
                                                                   (Description ""
                                                                    :> (ZUser
                                                                        :> (Summary
                                                                              "Get config for validateSAMLemails"
                                                                            :> (CanThrow
                                                                                  OperationDenied
                                                                                :> (CanThrow
                                                                                      'NotATeamMember
                                                                                    :> (CanThrow
                                                                                          'TeamNotFound
                                                                                        :> ("teams"
                                                                                            :> (Capture
                                                                                                  "tid"
                                                                                                  TeamId
                                                                                                :> ("features"
                                                                                                    :> ("validateSAMLemails"
                                                                                                        :> Get
                                                                                                             '[JSON]
                                                                                                             (LockableFeature
                                                                                                                ValidateSAMLEmailsConfig)))))))))))
                                                                 :<|> (Named
                                                                         '("get",
                                                                           DigitalSignaturesConfig)
                                                                         (Description ""
                                                                          :> (ZUser
                                                                              :> (Summary
                                                                                    "Get config for digitalSignatures"
                                                                                  :> (CanThrow
                                                                                        OperationDenied
                                                                                      :> (CanThrow
                                                                                            'NotATeamMember
                                                                                          :> (CanThrow
                                                                                                'TeamNotFound
                                                                                              :> ("teams"
                                                                                                  :> (Capture
                                                                                                        "tid"
                                                                                                        TeamId
                                                                                                      :> ("features"
                                                                                                          :> ("digitalSignatures"
                                                                                                              :> Get
                                                                                                                   '[JSON]
                                                                                                                   (LockableFeature
                                                                                                                      DigitalSignaturesConfig)))))))))))
                                                                       :<|> ((Named
                                                                                '("get",
                                                                                  AppLockConfig)
                                                                                (Description ""
                                                                                 :> (ZUser
                                                                                     :> (Summary
                                                                                           "Get config for appLock"
                                                                                         :> (CanThrow
                                                                                               OperationDenied
                                                                                             :> (CanThrow
                                                                                                   'NotATeamMember
                                                                                                 :> (CanThrow
                                                                                                       'TeamNotFound
                                                                                                     :> ("teams"
                                                                                                         :> (Capture
                                                                                                               "tid"
                                                                                                               TeamId
                                                                                                             :> ("features"
                                                                                                                 :> ("appLock"
                                                                                                                     :> Get
                                                                                                                          '[JSON]
                                                                                                                          (LockableFeature
                                                                                                                             AppLockConfig)))))))))))
                                                                              :<|> Named
                                                                                     '("put",
                                                                                       AppLockConfig)
                                                                                     (Description ""
                                                                                      :> (ZUser
                                                                                          :> (Summary
                                                                                                "Put config for appLock"
                                                                                              :> (CanThrow
                                                                                                    OperationDenied
                                                                                                  :> (CanThrow
                                                                                                        'NotATeamMember
                                                                                                      :> (CanThrow
                                                                                                            'TeamNotFound
                                                                                                          :> (CanThrow
                                                                                                                TeamFeatureError
                                                                                                              :> (CanThrowMany
                                                                                                                    '[]
                                                                                                                  :> ("teams"
                                                                                                                      :> (Capture
                                                                                                                            "tid"
                                                                                                                            TeamId
                                                                                                                          :> ("features"
                                                                                                                              :> ("appLock"
                                                                                                                                  :> (ReqBody
                                                                                                                                        '[JSON]
                                                                                                                                        (Feature
                                                                                                                                           AppLockConfig)
                                                                                                                                      :> Put
                                                                                                                                           '[JSON]
                                                                                                                                           (LockableFeature
                                                                                                                                              AppLockConfig)))))))))))))))
                                                                             :<|> ((Named
                                                                                      '("get",
                                                                                        FileSharingConfig)
                                                                                      (Description
                                                                                         ""
                                                                                       :> (ZUser
                                                                                           :> (Summary
                                                                                                 "Get config for fileSharing"
                                                                                               :> (CanThrow
                                                                                                     OperationDenied
                                                                                                   :> (CanThrow
                                                                                                         'NotATeamMember
                                                                                                       :> (CanThrow
                                                                                                             'TeamNotFound
                                                                                                           :> ("teams"
                                                                                                               :> (Capture
                                                                                                                     "tid"
                                                                                                                     TeamId
                                                                                                                   :> ("features"
                                                                                                                       :> ("fileSharing"
                                                                                                                           :> Get
                                                                                                                                '[JSON]
                                                                                                                                (LockableFeature
                                                                                                                                   FileSharingConfig)))))))))))
                                                                                    :<|> Named
                                                                                           '("put",
                                                                                             FileSharingConfig)
                                                                                           (Description
                                                                                              ""
                                                                                            :> (ZUser
                                                                                                :> (Summary
                                                                                                      "Put config for fileSharing"
                                                                                                    :> (CanThrow
                                                                                                          OperationDenied
                                                                                                        :> (CanThrow
                                                                                                              'NotATeamMember
                                                                                                            :> (CanThrow
                                                                                                                  'TeamNotFound
                                                                                                                :> (CanThrow
                                                                                                                      TeamFeatureError
                                                                                                                    :> (CanThrowMany
                                                                                                                          '[]
                                                                                                                        :> ("teams"
                                                                                                                            :> (Capture
                                                                                                                                  "tid"
                                                                                                                                  TeamId
                                                                                                                                :> ("features"
                                                                                                                                    :> ("fileSharing"
                                                                                                                                        :> (ReqBody
                                                                                                                                              '[JSON]
                                                                                                                                              (Feature
                                                                                                                                                 FileSharingConfig)
                                                                                                                                            :> Put
                                                                                                                                                 '[JSON]
                                                                                                                                                 (LockableFeature
                                                                                                                                                    FileSharingConfig)))))))))))))))
                                                                                   :<|> (Named
                                                                                           '("get",
                                                                                             ClassifiedDomainsConfig)
                                                                                           (Description
                                                                                              ""
                                                                                            :> (ZUser
                                                                                                :> (Summary
                                                                                                      "Get config for classifiedDomains"
                                                                                                    :> (CanThrow
                                                                                                          OperationDenied
                                                                                                        :> (CanThrow
                                                                                                              'NotATeamMember
                                                                                                            :> (CanThrow
                                                                                                                  'TeamNotFound
                                                                                                                :> ("teams"
                                                                                                                    :> (Capture
                                                                                                                          "tid"
                                                                                                                          TeamId
                                                                                                                        :> ("features"
                                                                                                                            :> ("classifiedDomains"
                                                                                                                                :> Get
                                                                                                                                     '[JSON]
                                                                                                                                     (LockableFeature
                                                                                                                                        ClassifiedDomainsConfig)))))))))))
                                                                                         :<|> ((Named
                                                                                                  '("get",
                                                                                                    ConferenceCallingConfig)
                                                                                                  (Description
                                                                                                     ""
                                                                                                   :> (ZUser
                                                                                                       :> (Summary
                                                                                                             "Get config for conferenceCalling"
                                                                                                           :> (CanThrow
                                                                                                                 OperationDenied
                                                                                                               :> (CanThrow
                                                                                                                     'NotATeamMember
                                                                                                                   :> (CanThrow
                                                                                                                         'TeamNotFound
                                                                                                                       :> ("teams"
                                                                                                                           :> (Capture
                                                                                                                                 "tid"
                                                                                                                                 TeamId
                                                                                                                               :> ("features"
                                                                                                                                   :> ("conferenceCalling"
                                                                                                                                       :> Get
                                                                                                                                            '[JSON]
                                                                                                                                            (LockableFeature
                                                                                                                                               ConferenceCallingConfig)))))))))))
                                                                                                :<|> Named
                                                                                                       '("put",
                                                                                                         ConferenceCallingConfig)
                                                                                                       (Description
                                                                                                          ""
                                                                                                        :> (ZUser
                                                                                                            :> (Summary
                                                                                                                  "Put config for conferenceCalling"
                                                                                                                :> (CanThrow
                                                                                                                      OperationDenied
                                                                                                                    :> (CanThrow
                                                                                                                          'NotATeamMember
                                                                                                                        :> (CanThrow
                                                                                                                              'TeamNotFound
                                                                                                                            :> (CanThrow
                                                                                                                                  TeamFeatureError
                                                                                                                                :> (CanThrowMany
                                                                                                                                      '[]
                                                                                                                                    :> ("teams"
                                                                                                                                        :> (Capture
                                                                                                                                              "tid"
                                                                                                                                              TeamId
                                                                                                                                            :> ("features"
                                                                                                                                                :> ("conferenceCalling"
                                                                                                                                                    :> (ReqBody
                                                                                                                                                          '[JSON]
                                                                                                                                                          (Feature
                                                                                                                                                             ConferenceCallingConfig)
                                                                                                                                                        :> Put
                                                                                                                                                             '[JSON]
                                                                                                                                                             (LockableFeature
                                                                                                                                                                ConferenceCallingConfig)))))))))))))))
                                                                                               :<|> ((Named
                                                                                                        '("get",
                                                                                                          SelfDeletingMessagesConfig)
                                                                                                        (Description
                                                                                                           ""
                                                                                                         :> (ZUser
                                                                                                             :> (Summary
                                                                                                                   "Get config for selfDeletingMessages"
                                                                                                                 :> (CanThrow
                                                                                                                       OperationDenied
                                                                                                                     :> (CanThrow
                                                                                                                           'NotATeamMember
                                                                                                                         :> (CanThrow
                                                                                                                               'TeamNotFound
                                                                                                                             :> ("teams"
                                                                                                                                 :> (Capture
                                                                                                                                       "tid"
                                                                                                                                       TeamId
                                                                                                                                     :> ("features"
                                                                                                                                         :> ("selfDeletingMessages"
                                                                                                                                             :> Get
                                                                                                                                                  '[JSON]
                                                                                                                                                  (LockableFeature
                                                                                                                                                     SelfDeletingMessagesConfig)))))))))))
                                                                                                      :<|> Named
                                                                                                             '("put",
                                                                                                               SelfDeletingMessagesConfig)
                                                                                                             (Description
                                                                                                                ""
                                                                                                              :> (ZUser
                                                                                                                  :> (Summary
                                                                                                                        "Put config for selfDeletingMessages"
                                                                                                                      :> (CanThrow
                                                                                                                            OperationDenied
                                                                                                                          :> (CanThrow
                                                                                                                                'NotATeamMember
                                                                                                                              :> (CanThrow
                                                                                                                                    'TeamNotFound
                                                                                                                                  :> (CanThrow
                                                                                                                                        TeamFeatureError
                                                                                                                                      :> (CanThrowMany
                                                                                                                                            '[]
                                                                                                                                          :> ("teams"
                                                                                                                                              :> (Capture
                                                                                                                                                    "tid"
                                                                                                                                                    TeamId
                                                                                                                                                  :> ("features"
                                                                                                                                                      :> ("selfDeletingMessages"
                                                                                                                                                          :> (ReqBody
                                                                                                                                                                '[JSON]
                                                                                                                                                                (Feature
                                                                                                                                                                   SelfDeletingMessagesConfig)
                                                                                                                                                              :> Put
                                                                                                                                                                   '[JSON]
                                                                                                                                                                   (LockableFeature
                                                                                                                                                                      SelfDeletingMessagesConfig)))))))))))))))
                                                                                                     :<|> ((Named
                                                                                                              '("get",
                                                                                                                GuestLinksConfig)
                                                                                                              (Description
                                                                                                                 ""
                                                                                                               :> (ZUser
                                                                                                                   :> (Summary
                                                                                                                         "Get config for conversationGuestLinks"
                                                                                                                       :> (CanThrow
                                                                                                                             OperationDenied
                                                                                                                           :> (CanThrow
                                                                                                                                 'NotATeamMember
                                                                                                                               :> (CanThrow
                                                                                                                                     'TeamNotFound
                                                                                                                                   :> ("teams"
                                                                                                                                       :> (Capture
                                                                                                                                             "tid"
                                                                                                                                             TeamId
                                                                                                                                           :> ("features"
                                                                                                                                               :> ("conversationGuestLinks"
                                                                                                                                                   :> Get
                                                                                                                                                        '[JSON]
                                                                                                                                                        (LockableFeature
                                                                                                                                                           GuestLinksConfig)))))))))))
                                                                                                            :<|> Named
                                                                                                                   '("put",
                                                                                                                     GuestLinksConfig)
                                                                                                                   (Description
                                                                                                                      ""
                                                                                                                    :> (ZUser
                                                                                                                        :> (Summary
                                                                                                                              "Put config for conversationGuestLinks"
                                                                                                                            :> (CanThrow
                                                                                                                                  OperationDenied
                                                                                                                                :> (CanThrow
                                                                                                                                      'NotATeamMember
                                                                                                                                    :> (CanThrow
                                                                                                                                          'TeamNotFound
                                                                                                                                        :> (CanThrow
                                                                                                                                              TeamFeatureError
                                                                                                                                            :> (CanThrowMany
                                                                                                                                                  '[]
                                                                                                                                                :> ("teams"
                                                                                                                                                    :> (Capture
                                                                                                                                                          "tid"
                                                                                                                                                          TeamId
                                                                                                                                                        :> ("features"
                                                                                                                                                            :> ("conversationGuestLinks"
                                                                                                                                                                :> (ReqBody
                                                                                                                                                                      '[JSON]
                                                                                                                                                                      (Feature
                                                                                                                                                                         GuestLinksConfig)
                                                                                                                                                                    :> Put
                                                                                                                                                                         '[JSON]
                                                                                                                                                                         (LockableFeature
                                                                                                                                                                            GuestLinksConfig)))))))))))))))
                                                                                                           :<|> ((Named
                                                                                                                    '("get",
                                                                                                                      SndFactorPasswordChallengeConfig)
                                                                                                                    (Description
                                                                                                                       ""
                                                                                                                     :> (ZUser
                                                                                                                         :> (Summary
                                                                                                                               "Get config for sndFactorPasswordChallenge"
                                                                                                                             :> (CanThrow
                                                                                                                                   OperationDenied
                                                                                                                                 :> (CanThrow
                                                                                                                                       'NotATeamMember
                                                                                                                                     :> (CanThrow
                                                                                                                                           'TeamNotFound
                                                                                                                                         :> ("teams"
                                                                                                                                             :> (Capture
                                                                                                                                                   "tid"
                                                                                                                                                   TeamId
                                                                                                                                                 :> ("features"
                                                                                                                                                     :> ("sndFactorPasswordChallenge"
                                                                                                                                                         :> Get
                                                                                                                                                              '[JSON]
                                                                                                                                                              (LockableFeature
                                                                                                                                                                 SndFactorPasswordChallengeConfig)))))))))))
                                                                                                                  :<|> Named
                                                                                                                         '("put",
                                                                                                                           SndFactorPasswordChallengeConfig)
                                                                                                                         (Description
                                                                                                                            ""
                                                                                                                          :> (ZUser
                                                                                                                              :> (Summary
                                                                                                                                    "Put config for sndFactorPasswordChallenge"
                                                                                                                                  :> (CanThrow
                                                                                                                                        OperationDenied
                                                                                                                                      :> (CanThrow
                                                                                                                                            'NotATeamMember
                                                                                                                                          :> (CanThrow
                                                                                                                                                'TeamNotFound
                                                                                                                                              :> (CanThrow
                                                                                                                                                    TeamFeatureError
                                                                                                                                                  :> (CanThrowMany
                                                                                                                                                        '[]
                                                                                                                                                      :> ("teams"
                                                                                                                                                          :> (Capture
                                                                                                                                                                "tid"
                                                                                                                                                                TeamId
                                                                                                                                                              :> ("features"
                                                                                                                                                                  :> ("sndFactorPasswordChallenge"
                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                            '[JSON]
                                                                                                                                                                            (Feature
                                                                                                                                                                               SndFactorPasswordChallengeConfig)
                                                                                                                                                                          :> Put
                                                                                                                                                                               '[JSON]
                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                  SndFactorPasswordChallengeConfig)))))))))))))))
                                                                                                                 :<|> ((Named
                                                                                                                          '("get",
                                                                                                                            MLSConfig)
                                                                                                                          (From
                                                                                                                             'V5
                                                                                                                           :> (Description
                                                                                                                                 ""
                                                                                                                               :> (ZUser
                                                                                                                                   :> (Summary
                                                                                                                                         "Get config for mls"
                                                                                                                                       :> (CanThrow
                                                                                                                                             OperationDenied
                                                                                                                                           :> (CanThrow
                                                                                                                                                 'NotATeamMember
                                                                                                                                               :> (CanThrow
                                                                                                                                                     'TeamNotFound
                                                                                                                                                   :> ("teams"
                                                                                                                                                       :> (Capture
                                                                                                                                                             "tid"
                                                                                                                                                             TeamId
                                                                                                                                                           :> ("features"
                                                                                                                                                               :> ("mls"
                                                                                                                                                                   :> Get
                                                                                                                                                                        '[JSON]
                                                                                                                                                                        (LockableFeature
                                                                                                                                                                           MLSConfig))))))))))))
                                                                                                                        :<|> Named
                                                                                                                               '("put",
                                                                                                                                 MLSConfig)
                                                                                                                               (From
                                                                                                                                  'V5
                                                                                                                                :> (Description
                                                                                                                                      ""
                                                                                                                                    :> (ZUser
                                                                                                                                        :> (Summary
                                                                                                                                              "Put config for mls"
                                                                                                                                            :> (CanThrow
                                                                                                                                                  OperationDenied
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'NotATeamMember
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'TeamNotFound
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              TeamFeatureError
                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                  '[]
                                                                                                                                                                :> ("teams"
                                                                                                                                                                    :> (Capture
                                                                                                                                                                          "tid"
                                                                                                                                                                          TeamId
                                                                                                                                                                        :> ("features"
                                                                                                                                                                            :> ("mls"
                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                      (Feature
                                                                                                                                                                                         MLSConfig)
                                                                                                                                                                                    :> Put
                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                            MLSConfig))))))))))))))))
                                                                                                                       :<|> ((Named
                                                                                                                                '("get",
                                                                                                                                  ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                (Description
                                                                                                                                   ""
                                                                                                                                 :> (ZUser
                                                                                                                                     :> (Summary
                                                                                                                                           "Get config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                         :> (CanThrow
                                                                                                                                               OperationDenied
                                                                                                                                             :> (CanThrow
                                                                                                                                                   'NotATeamMember
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'TeamNotFound
                                                                                                                                                     :> ("teams"
                                                                                                                                                         :> (Capture
                                                                                                                                                               "tid"
                                                                                                                                                               TeamId
                                                                                                                                                             :> ("features"
                                                                                                                                                                 :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                     :> Get
                                                                                                                                                                          '[JSON]
                                                                                                                                                                          (LockableFeature
                                                                                                                                                                             ExposeInvitationURLsToTeamAdminConfig)))))))))))
                                                                                                                              :<|> Named
                                                                                                                                     '("put",
                                                                                                                                       ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                     (Description
                                                                                                                                        ""
                                                                                                                                      :> (ZUser
                                                                                                                                          :> (Summary
                                                                                                                                                "Put config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                              :> (CanThrow
                                                                                                                                                    OperationDenied
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'NotATeamMember
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'TeamNotFound
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                TeamFeatureError
                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                    '[]
                                                                                                                                                                  :> ("teams"
                                                                                                                                                                      :> (Capture
                                                                                                                                                                            "tid"
                                                                                                                                                                            TeamId
                                                                                                                                                                          :> ("features"
                                                                                                                                                                              :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                        (Feature
                                                                                                                                                                                           ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                      :> Put
                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                              ExposeInvitationURLsToTeamAdminConfig)))))))))))))))
                                                                                                                             :<|> ((Named
                                                                                                                                      '("get",
                                                                                                                                        SearchVisibilityInboundConfig)
                                                                                                                                      (Description
                                                                                                                                         ""
                                                                                                                                       :> (ZUser
                                                                                                                                           :> (Summary
                                                                                                                                                 "Get config for searchVisibilityInbound"
                                                                                                                                               :> (CanThrow
                                                                                                                                                     OperationDenied
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'NotATeamMember
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'TeamNotFound
                                                                                                                                                           :> ("teams"
                                                                                                                                                               :> (Capture
                                                                                                                                                                     "tid"
                                                                                                                                                                     TeamId
                                                                                                                                                                   :> ("features"
                                                                                                                                                                       :> ("searchVisibilityInbound"
                                                                                                                                                                           :> Get
                                                                                                                                                                                '[JSON]
                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                   SearchVisibilityInboundConfig)))))))))))
                                                                                                                                    :<|> Named
                                                                                                                                           '("put",
                                                                                                                                             SearchVisibilityInboundConfig)
                                                                                                                                           (Description
                                                                                                                                              ""
                                                                                                                                            :> (ZUser
                                                                                                                                                :> (Summary
                                                                                                                                                      "Put config for searchVisibilityInbound"
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          OperationDenied
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'NotATeamMember
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      TeamFeatureError
                                                                                                                                                                    :> (CanThrowMany
                                                                                                                                                                          '[]
                                                                                                                                                                        :> ("teams"
                                                                                                                                                                            :> (Capture
                                                                                                                                                                                  "tid"
                                                                                                                                                                                  TeamId
                                                                                                                                                                                :> ("features"
                                                                                                                                                                                    :> ("searchVisibilityInbound"
                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                              (Feature
                                                                                                                                                                                                 SearchVisibilityInboundConfig)
                                                                                                                                                                                            :> Put
                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                    SearchVisibilityInboundConfig)))))))))))))))
                                                                                                                                   :<|> ((Named
                                                                                                                                            '("get",
                                                                                                                                              OutlookCalIntegrationConfig)
                                                                                                                                            (Description
                                                                                                                                               ""
                                                                                                                                             :> (ZUser
                                                                                                                                                 :> (Summary
                                                                                                                                                       "Get config for outlookCalIntegration"
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           OperationDenied
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'NotATeamMember
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                 :> ("teams"
                                                                                                                                                                     :> (Capture
                                                                                                                                                                           "tid"
                                                                                                                                                                           TeamId
                                                                                                                                                                         :> ("features"
                                                                                                                                                                             :> ("outlookCalIntegration"
                                                                                                                                                                                 :> Get
                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                         OutlookCalIntegrationConfig)))))))))))
                                                                                                                                          :<|> Named
                                                                                                                                                 '("put",
                                                                                                                                                   OutlookCalIntegrationConfig)
                                                                                                                                                 (Description
                                                                                                                                                    ""
                                                                                                                                                  :> (ZUser
                                                                                                                                                      :> (Summary
                                                                                                                                                            "Put config for outlookCalIntegration"
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                OperationDenied
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            TeamFeatureError
                                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                                '[]
                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                        "tid"
                                                                                                                                                                                        TeamId
                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                          :> ("outlookCalIntegration"
                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                    (Feature
                                                                                                                                                                                                       OutlookCalIntegrationConfig)
                                                                                                                                                                                                  :> Put
                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                          OutlookCalIntegrationConfig)))))))))))))))
                                                                                                                                         :<|> (Named
                                                                                                                                                 '("get",
                                                                                                                                                   MlsE2EIdConfig)
                                                                                                                                                 (From
                                                                                                                                                    'V5
                                                                                                                                                  :> (Description
                                                                                                                                                        ""
                                                                                                                                                      :> (ZUser
                                                                                                                                                          :> (Summary
                                                                                                                                                                "Get config for mlsE2EId"
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    OperationDenied
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                          :> ("teams"
                                                                                                                                                                              :> (Capture
                                                                                                                                                                                    "tid"
                                                                                                                                                                                    TeamId
                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                      :> ("mlsE2EId"
                                                                                                                                                                                          :> Get
                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                  MlsE2EIdConfig))))))))))))
                                                                                                                                               :<|> (Named
                                                                                                                                                       "put-MlsE2EIdConfig@v5"
                                                                                                                                                       (From
                                                                                                                                                          'V5
                                                                                                                                                        :> (Until
                                                                                                                                                              'V6
                                                                                                                                                            :> (ZUser
                                                                                                                                                                :> (Summary
                                                                                                                                                                      "Put config for mlsE2EId"
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          OperationDenied
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      TeamFeatureError
                                                                                                                                                                                    :> (CanThrowMany
                                                                                                                                                                                          '[]
                                                                                                                                                                                        :> ("teams"
                                                                                                                                                                                            :> (Capture
                                                                                                                                                                                                  "tid"
                                                                                                                                                                                                  TeamId
                                                                                                                                                                                                :> ("features"
                                                                                                                                                                                                    :> ("mlsE2EId"
                                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                              (Feature
                                                                                                                                                                                                                 MlsE2EIdConfig)
                                                                                                                                                                                                            :> Put
                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                    MlsE2EIdConfig)))))))))))))))
                                                                                                                                                     :<|> (Named
                                                                                                                                                             '("put",
                                                                                                                                                               MlsE2EIdConfig)
                                                                                                                                                             (From
                                                                                                                                                                'V6
                                                                                                                                                              :> (Description
                                                                                                                                                                    ""
                                                                                                                                                                  :> (ZUser
                                                                                                                                                                      :> (Summary
                                                                                                                                                                            "Put config for mlsE2EId"
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                OperationDenied
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            TeamFeatureError
                                                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                                                '[]
                                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                        "tid"
                                                                                                                                                                                                        TeamId
                                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                                          :> ("mlsE2EId"
                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                    (Feature
                                                                                                                                                                                                                       MlsE2EIdConfig)
                                                                                                                                                                                                                  :> Put
                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                          MlsE2EIdConfig)))))))))))))))
                                                                                                                                                           :<|> ((Named
                                                                                                                                                                    '("get",
                                                                                                                                                                      MlsMigrationConfig)
                                                                                                                                                                    (From
                                                                                                                                                                       'V5
                                                                                                                                                                     :> (Description
                                                                                                                                                                           ""
                                                                                                                                                                         :> (ZUser
                                                                                                                                                                             :> (Summary
                                                                                                                                                                                   "Get config for mlsMigration"
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                       "tid"
                                                                                                                                                                                                       TeamId
                                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                                         :> ("mlsMigration"
                                                                                                                                                                                                             :> Get
                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                     MlsMigrationConfig))))))))))))
                                                                                                                                                                  :<|> Named
                                                                                                                                                                         '("put",
                                                                                                                                                                           MlsMigrationConfig)
                                                                                                                                                                         (From
                                                                                                                                                                            'V5
                                                                                                                                                                          :> (Description
                                                                                                                                                                                ""
                                                                                                                                                                              :> (ZUser
                                                                                                                                                                                  :> (Summary
                                                                                                                                                                                        "Put config for mlsMigration"
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                                                            '[]
                                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                                      :> ("mlsMigration"
                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                (Feature
                                                                                                                                                                                                                                   MlsMigrationConfig)
                                                                                                                                                                                                                              :> Put
                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                      MlsMigrationConfig))))))))))))))))
                                                                                                                                                                 :<|> ((Named
                                                                                                                                                                          '("get",
                                                                                                                                                                            EnforceFileDownloadLocationConfig)
                                                                                                                                                                          (From
                                                                                                                                                                             'V5
                                                                                                                                                                           :> (Description
                                                                                                                                                                                 "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                               :> (ZUser
                                                                                                                                                                                   :> (Summary
                                                                                                                                                                                         "Get config for enforceFileDownloadLocation"
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             OperationDenied
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                                   :> ("teams"
                                                                                                                                                                                                       :> (Capture
                                                                                                                                                                                                             "tid"
                                                                                                                                                                                                             TeamId
                                                                                                                                                                                                           :> ("features"
                                                                                                                                                                                                               :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                   :> Get
                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                                           EnforceFileDownloadLocationConfig))))))))))))
                                                                                                                                                                        :<|> Named
                                                                                                                                                                               '("put",
                                                                                                                                                                                 EnforceFileDownloadLocationConfig)
                                                                                                                                                                               (From
                                                                                                                                                                                  'V5
                                                                                                                                                                                :> (Description
                                                                                                                                                                                      "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                    :> (ZUser
                                                                                                                                                                                        :> (Summary
                                                                                                                                                                                              "Put config for enforceFileDownloadLocation"
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                              TeamFeatureError
                                                                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                                                                  '[]
                                                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                                          "tid"
                                                                                                                                                                                                                          TeamId
                                                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                                                            :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                      (Feature
                                                                                                                                                                                                                                         EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                    :> Put
                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                                            EnforceFileDownloadLocationConfig))))))))))))))))
                                                                                                                                                                       :<|> (Named
                                                                                                                                                                               '("get",
                                                                                                                                                                                 LimitedEventFanoutConfig)
                                                                                                                                                                               (From
                                                                                                                                                                                  'V5
                                                                                                                                                                                :> (Description
                                                                                                                                                                                      ""
                                                                                                                                                                                    :> (ZUser
                                                                                                                                                                                        :> (Summary
                                                                                                                                                                                              "Get config for limitedEventFanout"
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                                        :> ("teams"
                                                                                                                                                                                                            :> (Capture
                                                                                                                                                                                                                  "tid"
                                                                                                                                                                                                                  TeamId
                                                                                                                                                                                                                :> ("features"
                                                                                                                                                                                                                    :> ("limitedEventFanout"
                                                                                                                                                                                                                        :> Get
                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                LimitedEventFanoutConfig))))))))))))
                                                                                                                                                                             :<|> (AllTeamFeaturesUserGet
                                                                                                                                                                                   :<|> (AllTeamFeaturesTeamGet
                                                                                                                                                                                         :<|> ((Named
                                                                                                                                                                                                  '("get-deprecated",
                                                                                                                                                                                                    SearchVisibilityAvailableConfig)
                                                                                                                                                                                                  (ZUser
                                                                                                                                                                                                   :> (Summary
                                                                                                                                                                                                         "[deprecated] Get config for searchVisibility"
                                                                                                                                                                                                       :> (Until
                                                                                                                                                                                                             'V2
                                                                                                                                                                                                           :> (Description
                                                                                                                                                                                                                 "Deprecated. Please use `GET /teams/:tid/features/searchVisibility` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                                                           :> ("teams"
                                                                                                                                                                                                                               :> (Capture
                                                                                                                                                                                                                                     "tid"
                                                                                                                                                                                                                                     TeamId
                                                                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                                                                       :> ("search-visibility"
                                                                                                                                                                                                                                           :> Get
                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                                   SearchVisibilityAvailableConfig))))))))))))
                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                        '("put-deprecated",
                                                                                                                                                                                                          SearchVisibilityAvailableConfig)
                                                                                                                                                                                                        (ZUser
                                                                                                                                                                                                         :> (Summary
                                                                                                                                                                                                               "[deprecated] Get config for searchVisibility"
                                                                                                                                                                                                             :> (Until
                                                                                                                                                                                                                   'V2
                                                                                                                                                                                                                 :> (Description
                                                                                                                                                                                                                       "Deprecated. Please use `PUT /teams/:tid/features/searchVisibility` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                       TeamFeatureError
                                                                                                                                                                                                                                     :> ("teams"
                                                                                                                                                                                                                                         :> (Capture
                                                                                                                                                                                                                                               "tid"
                                                                                                                                                                                                                                               TeamId
                                                                                                                                                                                                                                             :> ("features"
                                                                                                                                                                                                                                                 :> ("search-visibility"
                                                                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                           (Feature
                                                                                                                                                                                                                                                              SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                                                         :> Put
                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                                                 SearchVisibilityAvailableConfig))))))))))))))
                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                              '("get-deprecated",
                                                                                                                                                                                                                ValidateSAMLEmailsConfig)
                                                                                                                                                                                                              (ZUser
                                                                                                                                                                                                               :> (Summary
                                                                                                                                                                                                                     "[deprecated] Get config for validateSAMLemails"
                                                                                                                                                                                                                   :> (Until
                                                                                                                                                                                                                         'V2
                                                                                                                                                                                                                       :> (Description
                                                                                                                                                                                                                             "Deprecated. Please use `GET /teams/:tid/features/validateSAMLemails` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                                                                 TeamId
                                                                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                                                                   :> ("validate-saml-emails"
                                                                                                                                                                                                                                                       :> Get
                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                                                               ValidateSAMLEmailsConfig))))))))))))
                                                                                                                                                                                                            :<|> Named
                                                                                                                                                                                                                   '("get-deprecated",
                                                                                                                                                                                                                     DigitalSignaturesConfig)
                                                                                                                                                                                                                   (ZUser
                                                                                                                                                                                                                    :> (Summary
                                                                                                                                                                                                                          "[deprecated] Get config for digitalSignatures"
                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                              'V2
                                                                                                                                                                                                                            :> (Description
                                                                                                                                                                                                                                  "Deprecated. Please use `GET /teams/:tid/features/digitalSignatures` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                          OperationDenied
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                                                                      "tid"
                                                                                                                                                                                                                                                      TeamId
                                                                                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                                                                                        :> ("digital-signatures"
                                                                                                                                                                                                                                                            :> Get
                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                                                                    DigitalSignaturesConfig)))))))))))))))
                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                       '("get-config",
                                                                                                                                                                                                         LegalholdConfig)
                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                          "[deprecated] Get feature config for feature legalhold"
                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                              'V2
                                                                                                                                                                                                            :> (Description
                                                                                                                                                                                                                  "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                :> (ZUser
                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              OperationDenied
                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                                                                :> ("feature-configs"
                                                                                                                                                                                                                                    :> ("legalhold"
                                                                                                                                                                                                                                        :> Get
                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                                LegalholdConfig))))))))))
                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                             '("get-config",
                                                                                                                                                                                                               SSOConfig)
                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                "[deprecated] Get feature config for feature sso"
                                                                                                                                                                                                              :> (Until
                                                                                                                                                                                                                    'V2
                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                        "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                      :> (ZUser
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                                                      :> ("feature-configs"
                                                                                                                                                                                                                                          :> ("sso"
                                                                                                                                                                                                                                              :> Get
                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                                      SSOConfig))))))))))
                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                   '("get-config",
                                                                                                                                                                                                                     SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                      "[deprecated] Get feature config for feature searchVisibility"
                                                                                                                                                                                                                    :> (Until
                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                        :> (Description
                                                                                                                                                                                                                              "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                            :> (ZUser
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                          OperationDenied
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                                                                            :> ("feature-configs"
                                                                                                                                                                                                                                                :> ("searchVisibility"
                                                                                                                                                                                                                                                    :> Get
                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                                                            SearchVisibilityAvailableConfig))))))))))
                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                         '("get-config",
                                                                                                                                                                                                                           ValidateSAMLEmailsConfig)
                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                            "[deprecated] Get feature config for feature validateSAMLemails"
                                                                                                                                                                                                                          :> (Until
                                                                                                                                                                                                                                'V2
                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                    "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                  :> (ZUser
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                                                                  :> ("feature-configs"
                                                                                                                                                                                                                                                      :> ("validateSAMLemails"
                                                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                                                  ValidateSAMLEmailsConfig))))))))))
                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                               '("get-config",
                                                                                                                                                                                                                                 DigitalSignaturesConfig)
                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                  "[deprecated] Get feature config for feature digitalSignatures"
                                                                                                                                                                                                                                :> (Until
                                                                                                                                                                                                                                      'V2
                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                          "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                        :> (ZUser
                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                                                                                        :> ("feature-configs"
                                                                                                                                                                                                                                                            :> ("digitalSignatures"
                                                                                                                                                                                                                                                                :> Get
                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                                                        DigitalSignaturesConfig))))))))))
                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                     '("get-config",
                                                                                                                                                                                                                                       AppLockConfig)
                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                        "[deprecated] Get feature config for feature appLock"
                                                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                                          :> (Description
                                                                                                                                                                                                                                                "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                              :> (ZUser
                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                                                                                                              :> ("feature-configs"
                                                                                                                                                                                                                                                                  :> ("appLock"
                                                                                                                                                                                                                                                                      :> Get
                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                                                                              AppLockConfig))))))))))
                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                           '("get-config",
                                                                                                                                                                                                                                             FileSharingConfig)
                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                              "[deprecated] Get feature config for feature fileSharing"
                                                                                                                                                                                                                                            :> (Until
                                                                                                                                                                                                                                                  'V2
                                                                                                                                                                                                                                                :> (Description
                                                                                                                                                                                                                                                      "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                    :> (ZUser
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                                                                                    :> ("feature-configs"
                                                                                                                                                                                                                                                                        :> ("fileSharing"
                                                                                                                                                                                                                                                                            :> Get
                                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                                                                                    FileSharingConfig))))))))))
                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                 '("get-config",
                                                                                                                                                                                                                                                   ClassifiedDomainsConfig)
                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                    "[deprecated] Get feature config for feature classifiedDomains"
                                                                                                                                                                                                                                                  :> (Until
                                                                                                                                                                                                                                                        'V2
                                                                                                                                                                                                                                                      :> (Description
                                                                                                                                                                                                                                                            "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                          :> (ZUser
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        OperationDenied
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                                                                                                          :> ("feature-configs"
                                                                                                                                                                                                                                                                              :> ("classifiedDomains"
                                                                                                                                                                                                                                                                                  :> Get
                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                                                                                          ClassifiedDomainsConfig))))))))))
                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                       '("get-config",
                                                                                                                                                                                                                                                         ConferenceCallingConfig)
                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                          "[deprecated] Get feature config for feature conferenceCalling"
                                                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                                                              'V2
                                                                                                                                                                                                                                                            :> (Description
                                                                                                                                                                                                                                                                  "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                :> (ZUser
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              OperationDenied
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                                                                                                                :> ("feature-configs"
                                                                                                                                                                                                                                                                                    :> ("conferenceCalling"
                                                                                                                                                                                                                                                                                        :> Get
                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                                                                                ConferenceCallingConfig))))))))))
                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                             '("get-config",
                                                                                                                                                                                                                                                               SelfDeletingMessagesConfig)
                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                "[deprecated] Get feature config for feature selfDeletingMessages"
                                                                                                                                                                                                                                                              :> (Until
                                                                                                                                                                                                                                                                    'V2
                                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                                        "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                      :> (ZUser
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                                                                                                      :> ("feature-configs"
                                                                                                                                                                                                                                                                                          :> ("selfDeletingMessages"
                                                                                                                                                                                                                                                                                              :> Get
                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                                                                                      SelfDeletingMessagesConfig))))))))))
                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                   '("get-config",
                                                                                                                                                                                                                                                                     GuestLinksConfig)
                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                      "[deprecated] Get feature config for feature conversationGuestLinks"
                                                                                                                                                                                                                                                                    :> (Until
                                                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                                                        :> (Description
                                                                                                                                                                                                                                                                              "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                            :> (ZUser
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                          OperationDenied
                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                                                                                                                            :> ("feature-configs"
                                                                                                                                                                                                                                                                                                :> ("conversationGuestLinks"
                                                                                                                                                                                                                                                                                                    :> Get
                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                                                                                                            GuestLinksConfig))))))))))
                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                         '("get-config",
                                                                                                                                                                                                                                                                           SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                                            "[deprecated] Get feature config for feature sndFactorPasswordChallenge"
                                                                                                                                                                                                                                                                          :> (Until
                                                                                                                                                                                                                                                                                'V2
                                                                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                                                                    "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                                  :> (ZUser
                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                                                                                                                  :> ("feature-configs"
                                                                                                                                                                                                                                                                                                      :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                                                                                                  SndFactorPasswordChallengeConfig))))))))))
                                                                                                                                                                                                                                                                       :<|> Named
                                                                                                                                                                                                                                                                              '("get-config",
                                                                                                                                                                                                                                                                                MLSConfig)
                                                                                                                                                                                                                                                                              (Summary
                                                                                                                                                                                                                                                                                 "[deprecated] Get feature config for feature mls"
                                                                                                                                                                                                                                                                               :> (Until
                                                                                                                                                                                                                                                                                     'V2
                                                                                                                                                                                                                                                                                   :> (Description
                                                                                                                                                                                                                                                                                         "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                                       :> (ZUser
                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                                                                                                                                       :> ("feature-configs"
                                                                                                                                                                                                                                                                                                           :> ("mls"
                                                                                                                                                                                                                                                                                                               :> Get
                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                                                                                                                       MLSConfig)))))))))))))))))))))))))))))))))))))))))))))))))
                                  :<|> ((Named
                                           "mls-message"
                                           ("mls"
                                            :> (Summary "Post an MLS message"
                                                :> (From 'V5
                                                    :> (MakesFederatedCall
                                                          'Galley "on-mls-message-sent"
                                                        :> (MakesFederatedCall
                                                              'Galley "send-mls-message"
                                                            :> (MakesFederatedCall
                                                                  'Galley "on-conversation-updated"
                                                                :> (MakesFederatedCall
                                                                      'Brig "get-mls-clients"
                                                                    :> (CanThrow 'ConvAccessDenied
                                                                        :> (CanThrow
                                                                              'ConvMemberNotFound
                                                                            :> (CanThrow
                                                                                  'ConvNotFound
                                                                                :> (CanThrow
                                                                                      'LegalHoldNotEnabled
                                                                                    :> (CanThrow
                                                                                          'MissingLegalholdConsent
                                                                                        :> (CanThrow
                                                                                              'MLSClientMismatch
                                                                                            :> (CanThrow
                                                                                                  'MLSClientSenderUserMismatch
                                                                                                :> (CanThrow
                                                                                                      'MLSCommitMissingReferences
                                                                                                    :> (CanThrow
                                                                                                          'MLSGroupConversationMismatch
                                                                                                        :> (CanThrow
                                                                                                              'MLSInvalidLeafNodeIndex
                                                                                                            :> (CanThrow
                                                                                                                  'MLSNotEnabled
                                                                                                                :> (CanThrow
                                                                                                                      'MLSProposalNotFound
                                                                                                                    :> (CanThrow
                                                                                                                          'MLSProtocolErrorTag
                                                                                                                        :> (CanThrow
                                                                                                                              'MLSSelfRemovalNotAllowed
                                                                                                                            :> (CanThrow
                                                                                                                                  'MLSStaleMessage
                                                                                                                                :> (CanThrow
                                                                                                                                      'MLSSubConvClientNotInParent
                                                                                                                                    :> (CanThrow
                                                                                                                                          'MLSUnsupportedMessage
                                                                                                                                        :> (CanThrow
                                                                                                                                              'MLSUnsupportedProposal
                                                                                                                                            :> (CanThrow
                                                                                                                                                  MLSProposalFailure
                                                                                                                                                :> (CanThrow
                                                                                                                                                      NonFederatingBackends
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          UnreachableBackends
                                                                                                                                                        :> ("messages"
                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                :> (ZClient
                                                                                                                                                                    :> (ZConn
                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                              '[MLS]
                                                                                                                                                                              (RawMLS
                                                                                                                                                                                 Message)
                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                 'POST
                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                 '[Respond
                                                                                                                                                                                     201
                                                                                                                                                                                     "Message sent"
                                                                                                                                                                                     MLSMessageSendingStatus]
                                                                                                                                                                                 MLSMessageSendingStatus)))))))))))))))))))))))))))))))))
                                         :<|> (Named
                                                 "mls-commit-bundle"
                                                 ("mls"
                                                  :> (Summary "Post a MLS CommitBundle"
                                                      :> (From 'V5
                                                          :> (MakesFederatedCall
                                                                'Galley "on-mls-message-sent"
                                                              :> (MakesFederatedCall
                                                                    'Galley "mls-welcome"
                                                                  :> (MakesFederatedCall
                                                                        'Galley
                                                                        "send-mls-commit-bundle"
                                                                      :> (MakesFederatedCall
                                                                            'Galley
                                                                            "on-conversation-updated"
                                                                          :> (MakesFederatedCall
                                                                                'Brig
                                                                                "get-mls-clients"
                                                                              :> (MakesFederatedCall
                                                                                    'Brig
                                                                                    "get-users-by-ids"
                                                                                  :> (MakesFederatedCall
                                                                                        'Brig
                                                                                        "api-version"
                                                                                      :> (CanThrow
                                                                                            'ConvAccessDenied
                                                                                          :> (CanThrow
                                                                                                'ConvMemberNotFound
                                                                                              :> (CanThrow
                                                                                                    'ConvNotFound
                                                                                                  :> (CanThrow
                                                                                                        'LegalHoldNotEnabled
                                                                                                      :> (CanThrow
                                                                                                            'MissingLegalholdConsent
                                                                                                          :> (CanThrow
                                                                                                                'MLSClientMismatch
                                                                                                              :> (CanThrow
                                                                                                                    'MLSClientSenderUserMismatch
                                                                                                                  :> (CanThrow
                                                                                                                        'MLSCommitMissingReferences
                                                                                                                      :> (CanThrow
                                                                                                                            'MLSGroupConversationMismatch
                                                                                                                          :> (CanThrow
                                                                                                                                'MLSInvalidLeafNodeIndex
                                                                                                                              :> (CanThrow
                                                                                                                                    'MLSNotEnabled
                                                                                                                                  :> (CanThrow
                                                                                                                                        'MLSProposalNotFound
                                                                                                                                      :> (CanThrow
                                                                                                                                            'MLSProtocolErrorTag
                                                                                                                                          :> (CanThrow
                                                                                                                                                'MLSSelfRemovalNotAllowed
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'MLSStaleMessage
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'MLSSubConvClientNotInParent
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'MLSUnsupportedMessage
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'MLSUnsupportedProposal
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'MLSWelcomeMismatch
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        'MLSLegalholdIncompatible
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            MLSProposalFailure
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                NonFederatingBackends
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    UnreachableBackends
                                                                                                                                                                                  :> ("commit-bundles"
                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                          :> (ZClient
                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                        '[MLS]
                                                                                                                                                                                                        (RawMLS
                                                                                                                                                                                                           CommitBundle)
                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                           'POST
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           '[Respond
                                                                                                                                                                                                               201
                                                                                                                                                                                                               "Commit accepted and forwarded"
                                                                                                                                                                                                               MLSMessageSendingStatus]
                                                                                                                                                                                                           MLSMessageSendingStatus))))))))))))))))))))))))))))))))))))))
                                               :<|> Named
                                                      "mls-public-keys"
                                                      ("mls"
                                                       :> (Summary
                                                             "Get public keys used by the backend to sign external proposals"
                                                           :> (Description
                                                                 "The format of the returned key is determined by the `format` query parameter:\n - raw (default): base64-encoded raw public keys\n - jwk: keys are nested objects in JWK format."
                                                               :> (From 'V5
                                                                   :> (CanThrow 'MLSNotEnabled
                                                                       :> ("public-keys"
                                                                           :> (ZLocalUser
                                                                               :> (QueryParam
                                                                                     "format"
                                                                                     MLSPublicKeyFormat
                                                                                   :> MultiVerb
                                                                                        'GET
                                                                                        '[JSON]
                                                                                        '[Respond
                                                                                            200
                                                                                            "Public keys"
                                                                                            (MLSKeysByPurpose
                                                                                               (MLSKeys
                                                                                                  SomeKey))]
                                                                                        (MLSKeysByPurpose
                                                                                           (MLSKeys
                                                                                              SomeKey))))))))))))
                                        :<|> (CustomBackendAPI
                                              :<|> ((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"
                                                                    :> (MakesFederatedCall
                                                                          'Galley
                                                                          "on-conversation-updated"
                                                                        :> (MakesFederatedCall
                                                                              'Galley
                                                                              "on-mls-message-sent"
                                                                            :> (MakesFederatedCall
                                                                                  'Brig
                                                                                  "get-users-by-ids"
                                                                                :> (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"
                                                                                :> (MakesFederatedCall
                                                                                      'Galley
                                                                                      "on-conversation-updated"
                                                                                    :> (MakesFederatedCall
                                                                                          'Galley
                                                                                          "on-mls-message-sent"
                                                                                        :> (MakesFederatedCall
                                                                                              'Brig
                                                                                              "get-users-by-ids"
                                                                                            :> (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"
                                                                                      :> (MakesFederatedCall
                                                                                            'Galley
                                                                                            "on-conversation-updated"
                                                                                          :> (MakesFederatedCall
                                                                                                'Galley
                                                                                                "on-mls-message-sent"
                                                                                              :> (MakesFederatedCall
                                                                                                    'Brig
                                                                                                    "get-users-by-ids"
                                                                                                  :> (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"
                                                                                            :> (MakesFederatedCall
                                                                                                  'Galley
                                                                                                  "on-conversation-updated"
                                                                                                :> (MakesFederatedCall
                                                                                                      'Galley
                                                                                                      "on-mls-message-sent"
                                                                                                    :> (MakesFederatedCall
                                                                                                          'Brig
                                                                                                          "get-users-by-ids"
                                                                                                        :> (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"
                                                                                                 :> (MakesFederatedCall
                                                                                                       'Galley
                                                                                                       "on-conversation-updated"
                                                                                                     :> (MakesFederatedCall
                                                                                                           'Galley
                                                                                                           "on-mls-message-sent"
                                                                                                         :> (MakesFederatedCall
                                                                                                               'Brig
                                                                                                               "get-users-by-ids"
                                                                                                             :> (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"]
                                                                                                                                                                                                  ())))))))))))))))))))))))))))))))
                                                    :<|> ((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)))))))))))))))
                                                          :<|> TeamNotificationAPI))))))))))
   :<|> (("i"
          :> (Named
                "status"
                ("status" :> MultiVerb 'GET '[JSON] '[RespondEmpty 200 "OK"] ())
              :<|> (Named
                      "delete-user"
                      (Summary
                         "Remove a user from their teams and conversations and erase their clients"
                       :> (MakesFederatedCall 'Galley "on-conversation-updated"
                           :> (MakesFederatedCall 'Galley "on-mls-message-sent"
                               :> (ZLocalUser
                                   :> (ZOptConn
                                       :> ("user"
                                           :> MultiVerb
                                                'DELETE
                                                '[JSON]
                                                '[RespondEmpty 200 "Remove a user from Galley"]
                                                ()))))))
                    :<|> (Named
                            "connect"
                            (Summary "Create a connect conversation (deprecated)"
                             :> (MakesFederatedCall 'Brig "api-version"
                                 :> (MakesFederatedCall 'Galley "on-conversation-created"
                                     :> (MakesFederatedCall 'Galley "on-conversation-updated"
                                         :> (CanThrow 'ConvNotFound
                                             :> (CanThrow 'InvalidOperation
                                                 :> (CanThrow 'NotConnected
                                                     :> (CanThrow UnreachableBackends
                                                         :> (ZLocalUser
                                                             :> (ZOptConn
                                                                 :> ("conversations"
                                                                     :> ("connect"
                                                                         :> (ReqBody '[JSON] Connect
                                                                             :> MultiVerb
                                                                                  'POST
                                                                                  '[JSON]
                                                                                  '[WithHeaders
                                                                                      ConversationHeaders
                                                                                      Conversation
                                                                                      (VersionedRespond
                                                                                         'V6
                                                                                         200
                                                                                         "Conversation existed"
                                                                                         Conversation),
                                                                                    WithHeaders
                                                                                      ConversationHeaders
                                                                                      Conversation
                                                                                      (VersionedRespond
                                                                                         'V6
                                                                                         201
                                                                                         "Conversation created"
                                                                                         Conversation)]
                                                                                  (ResponseForExistedCreated
                                                                                     Conversation))))))))))))))
                          :<|> (Named
                                  "get-conversation-clients"
                                  (Summary "Get mls conversation client list"
                                   :> (CanThrow 'ConvNotFound
                                       :> ("group"
                                           :> (Capture "gid" GroupId
                                               :> MultiVerb
                                                    'GET
                                                    '[JSON]
                                                    '[Respond 200 "Clients" ClientList]
                                                    ClientList))))
                                :<|> (Named
                                        "guard-legalhold-policy-conflicts"
                                        ("guard-legalhold-policy-conflicts"
                                         :> (CanThrow 'MissingLegalholdConsent
                                             :> (CanThrow 'MissingLegalholdConsentOldClients
                                                 :> (ReqBody '[JSON] GuardLegalholdPolicyConflicts
                                                     :> MultiVerb
                                                          'PUT
                                                          '[JSON]
                                                          '[RespondEmpty
                                                              200 "Guard Legalhold Policy"]
                                                          ()))))
                                      :<|> (("legalhold"
                                             :> ("whitelisted-teams"
                                                 :> (Capture "tid" TeamId
                                                     :> (Named
                                                           "set-team-legalhold-whitelisted"
                                                           (MultiVerb
                                                              'PUT
                                                              '[JSON]
                                                              '[RespondEmpty
                                                                  200 "Team Legalhold Whitelisted"]
                                                              ())
                                                         :<|> (Named
                                                                 "unset-team-legalhold-whitelisted"
                                                                 (MultiVerb
                                                                    'DELETE
                                                                    '[JSON]
                                                                    '[RespondEmpty
                                                                        204
                                                                        "Team Legalhold un-Whitelisted"]
                                                                    ())
                                                               :<|> Named
                                                                      "get-team-legalhold-whitelisted"
                                                                      (MultiVerb
                                                                         'GET
                                                                         '[JSON]
                                                                         '[RespondEmpty
                                                                             404
                                                                             "Team not Legalhold Whitelisted",
                                                                           RespondEmpty
                                                                             200
                                                                             "Team Legalhold Whitelisted"]
                                                                         Bool))))))
                                            :<|> (("teams"
                                                   :> (Capture "tid" TeamId
                                                       :> (Named
                                                             "get-team-internal"
                                                             (CanThrow 'TeamNotFound
                                                              :> Get '[JSON] TeamData)
                                                           :<|> (Named
                                                                   "create-binding-team"
                                                                   (ZUser
                                                                    :> (ReqBody
                                                                          '[JSON] BindingNewTeam
                                                                        :> MultiVerb
                                                                             'PUT
                                                                             '[JSON]
                                                                             '[WithHeaders
                                                                                 '[Header
                                                                                     "Location"
                                                                                     TeamId]
                                                                                 TeamId
                                                                                 (RespondEmpty
                                                                                    201 "OK")]
                                                                             TeamId))
                                                                 :<|> (Named
                                                                         "delete-binding-team"
                                                                         (CanThrow 'NoBindingTeam
                                                                          :> (CanThrow
                                                                                'NotAOneMemberTeam
                                                                              :> (CanThrow
                                                                                    'DeleteQueueFull
                                                                                  :> (CanThrow
                                                                                        'TeamNotFound
                                                                                      :> (QueryFlag
                                                                                            "force"
                                                                                          :> MultiVerb
                                                                                               'DELETE
                                                                                               '[JSON]
                                                                                               '[RespondEmpty
                                                                                                   202
                                                                                                   "OK"]
                                                                                               ())))))
                                                                       :<|> (Named
                                                                               "get-team-name"
                                                                               ("name"
                                                                                :> (CanThrow
                                                                                      'TeamNotFound
                                                                                    :> Get
                                                                                         '[JSON]
                                                                                         TeamName))
                                                                             :<|> (Named
                                                                                     "update-team-status"
                                                                                     ("status"
                                                                                      :> (CanThrow
                                                                                            'TeamNotFound
                                                                                          :> (CanThrow
                                                                                                'InvalidTeamStatusUpdate
                                                                                              :> (ReqBody
                                                                                                    '[JSON]
                                                                                                    TeamStatusUpdate
                                                                                                  :> MultiVerb
                                                                                                       'PUT
                                                                                                       '[JSON]
                                                                                                       '[RespondEmpty
                                                                                                           200
                                                                                                           "OK"]
                                                                                                       ()))))
                                                                                   :<|> (("members"
                                                                                          :> (Named
                                                                                                "unchecked-add-team-member"
                                                                                                (CanThrow
                                                                                                   'TooManyTeamMembers
                                                                                                 :> (CanThrow
                                                                                                       'TooManyTeamMembersOnTeamWithLegalhold
                                                                                                     :> (CanThrow
                                                                                                           'TooManyTeamAdmins
                                                                                                         :> (ReqBody
                                                                                                               '[JSON]
                                                                                                               NewTeamMember
                                                                                                             :> MultiVerb
                                                                                                                  'POST
                                                                                                                  '[JSON]
                                                                                                                  '[RespondEmpty
                                                                                                                      200
                                                                                                                      "OK"]
                                                                                                                  ()))))
                                                                                              :<|> (Named
                                                                                                      "unchecked-get-team-members"
                                                                                                      (QueryParam'
                                                                                                         '[Strict]
                                                                                                         "maxResults"
                                                                                                         (Range
                                                                                                            1
                                                                                                            HardTruncationLimit
                                                                                                            Int32)
                                                                                                       :> Get
                                                                                                            '[JSON]
                                                                                                            TeamMemberList)
                                                                                                    :<|> (Named
                                                                                                            "unchecked-get-team-member"
                                                                                                            (Capture
                                                                                                               "uid"
                                                                                                               UserId
                                                                                                             :> (CanThrow
                                                                                                                   'TeamMemberNotFound
                                                                                                                 :> Get
                                                                                                                      '[JSON]
                                                                                                                      TeamMember))
                                                                                                          :<|> (Named
                                                                                                                  "can-user-join-team"
                                                                                                                  ("check"
                                                                                                                   :> (CanThrow
                                                                                                                         'TooManyTeamMembersOnTeamWithLegalhold
                                                                                                                       :> MultiVerb
                                                                                                                            'GET
                                                                                                                            '[JSON]
                                                                                                                            '[RespondEmpty
                                                                                                                                200
                                                                                                                                "User can join"]
                                                                                                                            ()))
                                                                                                                :<|> Named
                                                                                                                       "unchecked-update-team-member"
                                                                                                                       (CanThrow
                                                                                                                          'AccessDenied
                                                                                                                        :> (CanThrow
                                                                                                                              'InvalidPermissions
                                                                                                                            :> (CanThrow
                                                                                                                                  'TeamNotFound
                                                                                                                                :> (CanThrow
                                                                                                                                      'TeamMemberNotFound
                                                                                                                                    :> (CanThrow
                                                                                                                                          'TooManyTeamAdmins
                                                                                                                                        :> (CanThrow
                                                                                                                                              'NotATeamMember
                                                                                                                                            :> (CanThrow
                                                                                                                                                  OperationDenied
                                                                                                                                                :> (ReqBody
                                                                                                                                                      '[JSON]
                                                                                                                                                      NewTeamMember
                                                                                                                                                    :> MultiVerb
                                                                                                                                                         'PUT
                                                                                                                                                         '[JSON]
                                                                                                                                                         '[RespondEmpty
                                                                                                                                                             200
                                                                                                                                                             ""]
                                                                                                                                                         ())))))))))))))
                                                                                         :<|> (Named
                                                                                                 "user-is-team-owner"
                                                                                                 ("is-team-owner"
                                                                                                  :> (Capture
                                                                                                        "uid"
                                                                                                        UserId
                                                                                                      :> (CanThrow
                                                                                                            'AccessDenied
                                                                                                          :> (CanThrow
                                                                                                                'TeamMemberNotFound
                                                                                                              :> (CanThrow
                                                                                                                    'NotATeamMember
                                                                                                                  :> MultiVerb
                                                                                                                       'GET
                                                                                                                       '[JSON]
                                                                                                                       '[RespondEmpty
                                                                                                                           200
                                                                                                                           "User is team owner"]
                                                                                                                       ())))))
                                                                                               :<|> ("search-visibility"
                                                                                                     :> (Named
                                                                                                           "get-search-visibility-internal"
                                                                                                           (Get
                                                                                                              '[JSON]
                                                                                                              TeamSearchVisibilityView)
                                                                                                         :<|> Named
                                                                                                                "set-search-visibility-internal"
                                                                                                                (CanThrow
                                                                                                                   'TeamSearchVisibilityNotEnabled
                                                                                                                 :> (CanThrow
                                                                                                                       OperationDenied
                                                                                                                     :> (CanThrow
                                                                                                                           'NotATeamMember
                                                                                                                         :> (CanThrow
                                                                                                                               'TeamNotFound
                                                                                                                             :> (ReqBody
                                                                                                                                   '[JSON]
                                                                                                                                   TeamSearchVisibilityView
                                                                                                                                 :> MultiVerb
                                                                                                                                      'PUT
                                                                                                                                      '[JSON]
                                                                                                                                      '[RespondEmpty
                                                                                                                                          204
                                                                                                                                          "OK"]
                                                                                                                                      ()))))))))))))))))
                                                  :<|> ((Named
                                                           "get-team-members"
                                                           (CanThrow 'NonBindingTeam
                                                            :> (CanThrow 'TeamNotFound
                                                                :> ("users"
                                                                    :> (Capture "uid" UserId
                                                                        :> ("team"
                                                                            :> ("members"
                                                                                :> Get
                                                                                     '[JSON]
                                                                                     TeamMemberList))))))
                                                         :<|> (Named
                                                                 "get-team-id"
                                                                 (CanThrow 'NonBindingTeam
                                                                  :> (CanThrow 'TeamNotFound
                                                                      :> ("users"
                                                                          :> (Capture "uid" UserId
                                                                              :> ("team"
                                                                                  :> Get
                                                                                       '[JSON]
                                                                                       TeamId)))))
                                                               :<|> (Named
                                                                       "test-get-clients"
                                                                       ("test"
                                                                        :> ("clients"
                                                                            :> (ZUser
                                                                                :> Get
                                                                                     '[JSON]
                                                                                     [ClientId])))
                                                                     :<|> (Named
                                                                             "test-add-client"
                                                                             ("clients"
                                                                              :> (ZUser
                                                                                  :> (Capture
                                                                                        "cid"
                                                                                        ClientId
                                                                                      :> MultiVerb
                                                                                           'POST
                                                                                           '[JSON]
                                                                                           '[RespondEmpty
                                                                                               200
                                                                                               "OK"]
                                                                                           ())))
                                                                           :<|> (Named
                                                                                   "test-delete-client"
                                                                                   ("clients"
                                                                                    :> (ZUser
                                                                                        :> (Capture
                                                                                              "cid"
                                                                                              ClientId
                                                                                            :> MultiVerb
                                                                                                 'DELETE
                                                                                                 '[JSON]
                                                                                                 '[RespondEmpty
                                                                                                     200
                                                                                                     "OK"]
                                                                                                 ())))
                                                                                 :<|> (Named
                                                                                         "add-service"
                                                                                         ("services"
                                                                                          :> (ReqBody
                                                                                                '[JSON]
                                                                                                Service
                                                                                              :> MultiVerb
                                                                                                   'POST
                                                                                                   '[JSON]
                                                                                                   '[RespondEmpty
                                                                                                       200
                                                                                                       "OK"]
                                                                                                   ()))
                                                                                       :<|> (Named
                                                                                               "delete-service"
                                                                                               ("services"
                                                                                                :> (ReqBody
                                                                                                      '[JSON]
                                                                                                      ServiceRef
                                                                                                    :> MultiVerb
                                                                                                         'DELETE
                                                                                                         '[JSON]
                                                                                                         '[RespondEmpty
                                                                                                             200
                                                                                                             "OK"]
                                                                                                         ()))
                                                                                             :<|> (Named
                                                                                                     "i-add-bot"
                                                                                                     (CanThrow
                                                                                                        ('ActionDenied
                                                                                                           'AddConversationMember)
                                                                                                      :> (CanThrow
                                                                                                            'ConvNotFound
                                                                                                          :> (CanThrow
                                                                                                                'InvalidOperation
                                                                                                              :> (CanThrow
                                                                                                                    'TooManyMembers
                                                                                                                  :> ("bots"
                                                                                                                      :> (ZLocalUser
                                                                                                                          :> (ZConn
                                                                                                                              :> (ReqBody
                                                                                                                                    '[JSON]
                                                                                                                                    AddBot
                                                                                                                                  :> Post
                                                                                                                                       '[JSON]
                                                                                                                                       Event))))))))
                                                                                                   :<|> (Named
                                                                                                           "delete-bot"
                                                                                                           (CanThrow
                                                                                                              'ConvNotFound
                                                                                                            :> (CanThrow
                                                                                                                  ('ActionDenied
                                                                                                                     'RemoveConversationMember)
                                                                                                                :> ("bots"
                                                                                                                    :> (ZLocalUser
                                                                                                                        :> (ZOptConn
                                                                                                                            :> (ReqBody
                                                                                                                                  '[JSON]
                                                                                                                                  RemoveBot
                                                                                                                                :> MultiVerb
                                                                                                                                     'DELETE
                                                                                                                                     '[JSON]
                                                                                                                                     (UpdateResponses
                                                                                                                                        "Bot not found"
                                                                                                                                        "Bot deleted"
                                                                                                                                        Event)
                                                                                                                                     (UpdateResult
                                                                                                                                        Event)))))))
                                                                                                         :<|> (Named
                                                                                                                 "put-custom-backend"
                                                                                                                 ("custom-backend"
                                                                                                                  :> ("by-domain"
                                                                                                                      :> (Capture
                                                                                                                            "domain"
                                                                                                                            Domain
                                                                                                                          :> (ReqBody
                                                                                                                                '[JSON]
                                                                                                                                CustomBackend
                                                                                                                              :> MultiVerb
                                                                                                                                   'PUT
                                                                                                                                   '[JSON]
                                                                                                                                   '[RespondEmpty
                                                                                                                                       201
                                                                                                                                       "OK"]
                                                                                                                                   ()))))
                                                                                                               :<|> Named
                                                                                                                      "delete-custom-backend"
                                                                                                                      ("custom-backend"
                                                                                                                       :> ("by-domain"
                                                                                                                           :> (Capture
                                                                                                                                 "domain"
                                                                                                                                 Domain
                                                                                                                               :> MultiVerb
                                                                                                                                    'DELETE
                                                                                                                                    '[JSON]
                                                                                                                                    '[RespondEmpty
                                                                                                                                        200
                                                                                                                                        "OK"]
                                                                                                                                    ())))))))))))))
                                                        :<|> (Named
                                                                "upsert-one2one"
                                                                (Summary
                                                                   "Create or Update a connect or one2one conversation."
                                                                 :> ("conversations"
                                                                     :> ("one2one"
                                                                         :> ("upsert"
                                                                             :> (ReqBody
                                                                                   '[JSON]
                                                                                   UpsertOne2OneConversationRequest
                                                                                 :> MultiVerb
                                                                                      'POST
                                                                                      '[JSON]
                                                                                      '[RespondEmpty
                                                                                          200
                                                                                          "Upsert One2One Policy"]
                                                                                      ())))))
                                                              :<|> ((((Named
                                                                         '("iget", LegalholdConfig)
                                                                         (Description ""
                                                                          :> (Summary
                                                                                "Get config for legalhold"
                                                                              :> (CanThrow
                                                                                    OperationDenied
                                                                                  :> (CanThrow
                                                                                        'NotATeamMember
                                                                                      :> (CanThrow
                                                                                            'TeamNotFound
                                                                                          :> ("teams"
                                                                                              :> (Capture
                                                                                                    "tid"
                                                                                                    TeamId
                                                                                                  :> ("features"
                                                                                                      :> ("legalhold"
                                                                                                          :> Get
                                                                                                               '[JSON]
                                                                                                               (LockableFeature
                                                                                                                  LegalholdConfig))))))))))
                                                                       :<|> (Named
                                                                               '("iput",
                                                                                 LegalholdConfig)
                                                                               (Description ""
                                                                                :> (Summary
                                                                                      "Put config for legalhold"
                                                                                    :> (CanThrow
                                                                                          OperationDenied
                                                                                        :> (CanThrow
                                                                                              'NotATeamMember
                                                                                            :> (CanThrow
                                                                                                  'TeamNotFound
                                                                                                :> (CanThrow
                                                                                                      TeamFeatureError
                                                                                                    :> (CanThrowMany
                                                                                                          '[ 'ActionDenied
                                                                                                               'RemoveConversationMember,
                                                                                                             'CannotEnableLegalHoldServiceLargeTeam,
                                                                                                             'LegalHoldNotEnabled,
                                                                                                             'LegalHoldDisableUnimplemented,
                                                                                                             'LegalHoldServiceNotRegistered,
                                                                                                             'UserLegalHoldIllegalOperation,
                                                                                                             'LegalHoldCouldNotBlockConnections]
                                                                                                        :> ("teams"
                                                                                                            :> (Capture
                                                                                                                  "tid"
                                                                                                                  TeamId
                                                                                                                :> ("features"
                                                                                                                    :> ("legalhold"
                                                                                                                        :> (ReqBody
                                                                                                                              '[JSON]
                                                                                                                              (Feature
                                                                                                                                 LegalholdConfig)
                                                                                                                            :> Put
                                                                                                                                 '[JSON]
                                                                                                                                 (LockableFeature
                                                                                                                                    LegalholdConfig)))))))))))))
                                                                             :<|> Named
                                                                                    '("ipatch",
                                                                                      LegalholdConfig)
                                                                                    (Description ""
                                                                                     :> (Summary
                                                                                           "Patch config for legalhold"
                                                                                         :> (CanThrow
                                                                                               OperationDenied
                                                                                             :> (CanThrow
                                                                                                   'NotATeamMember
                                                                                                 :> (CanThrow
                                                                                                       'TeamNotFound
                                                                                                     :> (CanThrow
                                                                                                           TeamFeatureError
                                                                                                         :> (CanThrowMany
                                                                                                               '[ 'ActionDenied
                                                                                                                    'RemoveConversationMember,
                                                                                                                  'CannotEnableLegalHoldServiceLargeTeam,
                                                                                                                  'LegalHoldNotEnabled,
                                                                                                                  'LegalHoldDisableUnimplemented,
                                                                                                                  'LegalHoldServiceNotRegistered,
                                                                                                                  'UserLegalHoldIllegalOperation,
                                                                                                                  'LegalHoldCouldNotBlockConnections]
                                                                                                             :> ("teams"
                                                                                                                 :> (Capture
                                                                                                                       "tid"
                                                                                                                       TeamId
                                                                                                                     :> ("features"
                                                                                                                         :> ("legalhold"
                                                                                                                             :> (ReqBody
                                                                                                                                   '[JSON]
                                                                                                                                   (LockableFeaturePatch
                                                                                                                                      LegalholdConfig)
                                                                                                                                 :> Patch
                                                                                                                                      '[JSON]
                                                                                                                                      (LockableFeature
                                                                                                                                         LegalholdConfig)))))))))))))))
                                                                      :<|> ((Named
                                                                               '("iget", SSOConfig)
                                                                               (Description ""
                                                                                :> (Summary
                                                                                      "Get config for sso"
                                                                                    :> (CanThrow
                                                                                          OperationDenied
                                                                                        :> (CanThrow
                                                                                              'NotATeamMember
                                                                                            :> (CanThrow
                                                                                                  'TeamNotFound
                                                                                                :> ("teams"
                                                                                                    :> (Capture
                                                                                                          "tid"
                                                                                                          TeamId
                                                                                                        :> ("features"
                                                                                                            :> ("sso"
                                                                                                                :> Get
                                                                                                                     '[JSON]
                                                                                                                     (LockableFeature
                                                                                                                        SSOConfig))))))))))
                                                                             :<|> (Named
                                                                                     '("iput",
                                                                                       SSOConfig)
                                                                                     (Description ""
                                                                                      :> (Summary
                                                                                            "Put config for sso"
                                                                                          :> (CanThrow
                                                                                                OperationDenied
                                                                                              :> (CanThrow
                                                                                                    'NotATeamMember
                                                                                                  :> (CanThrow
                                                                                                        'TeamNotFound
                                                                                                      :> (CanThrow
                                                                                                            TeamFeatureError
                                                                                                          :> (CanThrowMany
                                                                                                                '[]
                                                                                                              :> ("teams"
                                                                                                                  :> (Capture
                                                                                                                        "tid"
                                                                                                                        TeamId
                                                                                                                      :> ("features"
                                                                                                                          :> ("sso"
                                                                                                                              :> (ReqBody
                                                                                                                                    '[JSON]
                                                                                                                                    (Feature
                                                                                                                                       SSOConfig)
                                                                                                                                  :> Put
                                                                                                                                       '[JSON]
                                                                                                                                       (LockableFeature
                                                                                                                                          SSOConfig)))))))))))))
                                                                                   :<|> Named
                                                                                          '("ipatch",
                                                                                            SSOConfig)
                                                                                          (Description
                                                                                             ""
                                                                                           :> (Summary
                                                                                                 "Patch config for sso"
                                                                                               :> (CanThrow
                                                                                                     OperationDenied
                                                                                                   :> (CanThrow
                                                                                                         'NotATeamMember
                                                                                                       :> (CanThrow
                                                                                                             'TeamNotFound
                                                                                                           :> (CanThrow
                                                                                                                 TeamFeatureError
                                                                                                               :> (CanThrowMany
                                                                                                                     '[]
                                                                                                                   :> ("teams"
                                                                                                                       :> (Capture
                                                                                                                             "tid"
                                                                                                                             TeamId
                                                                                                                           :> ("features"
                                                                                                                               :> ("sso"
                                                                                                                                   :> (ReqBody
                                                                                                                                         '[JSON]
                                                                                                                                         (LockableFeaturePatch
                                                                                                                                            SSOConfig)
                                                                                                                                       :> Patch
                                                                                                                                            '[JSON]
                                                                                                                                            (LockableFeature
                                                                                                                                               SSOConfig)))))))))))))))
                                                                            :<|> ((Named
                                                                                     '("iget",
                                                                                       SearchVisibilityAvailableConfig)
                                                                                     (Description ""
                                                                                      :> (Summary
                                                                                            "Get config for searchVisibility"
                                                                                          :> (CanThrow
                                                                                                OperationDenied
                                                                                              :> (CanThrow
                                                                                                    'NotATeamMember
                                                                                                  :> (CanThrow
                                                                                                        'TeamNotFound
                                                                                                      :> ("teams"
                                                                                                          :> (Capture
                                                                                                                "tid"
                                                                                                                TeamId
                                                                                                              :> ("features"
                                                                                                                  :> ("searchVisibility"
                                                                                                                      :> Get
                                                                                                                           '[JSON]
                                                                                                                           (LockableFeature
                                                                                                                              SearchVisibilityAvailableConfig))))))))))
                                                                                   :<|> (Named
                                                                                           '("iput",
                                                                                             SearchVisibilityAvailableConfig)
                                                                                           (Description
                                                                                              ""
                                                                                            :> (Summary
                                                                                                  "Put config for searchVisibility"
                                                                                                :> (CanThrow
                                                                                                      OperationDenied
                                                                                                    :> (CanThrow
                                                                                                          'NotATeamMember
                                                                                                        :> (CanThrow
                                                                                                              'TeamNotFound
                                                                                                            :> (CanThrow
                                                                                                                  TeamFeatureError
                                                                                                                :> (CanThrowMany
                                                                                                                      '[]
                                                                                                                    :> ("teams"
                                                                                                                        :> (Capture
                                                                                                                              "tid"
                                                                                                                              TeamId
                                                                                                                            :> ("features"
                                                                                                                                :> ("searchVisibility"
                                                                                                                                    :> (ReqBody
                                                                                                                                          '[JSON]
                                                                                                                                          (Feature
                                                                                                                                             SearchVisibilityAvailableConfig)
                                                                                                                                        :> Put
                                                                                                                                             '[JSON]
                                                                                                                                             (LockableFeature
                                                                                                                                                SearchVisibilityAvailableConfig)))))))))))))
                                                                                         :<|> Named
                                                                                                '("ipatch",
                                                                                                  SearchVisibilityAvailableConfig)
                                                                                                (Description
                                                                                                   ""
                                                                                                 :> (Summary
                                                                                                       "Patch config for searchVisibility"
                                                                                                     :> (CanThrow
                                                                                                           OperationDenied
                                                                                                         :> (CanThrow
                                                                                                               'NotATeamMember
                                                                                                             :> (CanThrow
                                                                                                                   'TeamNotFound
                                                                                                                 :> (CanThrow
                                                                                                                       TeamFeatureError
                                                                                                                     :> (CanThrowMany
                                                                                                                           '[]
                                                                                                                         :> ("teams"
                                                                                                                             :> (Capture
                                                                                                                                   "tid"
                                                                                                                                   TeamId
                                                                                                                                 :> ("features"
                                                                                                                                     :> ("searchVisibility"
                                                                                                                                         :> (ReqBody
                                                                                                                                               '[JSON]
                                                                                                                                               (LockableFeaturePatch
                                                                                                                                                  SearchVisibilityAvailableConfig)
                                                                                                                                             :> Patch
                                                                                                                                                  '[JSON]
                                                                                                                                                  (LockableFeature
                                                                                                                                                     SearchVisibilityAvailableConfig)))))))))))))))
                                                                                  :<|> ((Named
                                                                                           '("iget",
                                                                                             SearchVisibilityInboundConfig)
                                                                                           (Description
                                                                                              ""
                                                                                            :> (Summary
                                                                                                  "Get config for searchVisibilityInbound"
                                                                                                :> (CanThrow
                                                                                                      OperationDenied
                                                                                                    :> (CanThrow
                                                                                                          'NotATeamMember
                                                                                                        :> (CanThrow
                                                                                                              'TeamNotFound
                                                                                                            :> ("teams"
                                                                                                                :> (Capture
                                                                                                                      "tid"
                                                                                                                      TeamId
                                                                                                                    :> ("features"
                                                                                                                        :> ("searchVisibilityInbound"
                                                                                                                            :> Get
                                                                                                                                 '[JSON]
                                                                                                                                 (LockableFeature
                                                                                                                                    SearchVisibilityInboundConfig))))))))))
                                                                                         :<|> (Named
                                                                                                 '("iput",
                                                                                                   SearchVisibilityInboundConfig)
                                                                                                 (Description
                                                                                                    ""
                                                                                                  :> (Summary
                                                                                                        "Put config for searchVisibilityInbound"
                                                                                                      :> (CanThrow
                                                                                                            OperationDenied
                                                                                                          :> (CanThrow
                                                                                                                'NotATeamMember
                                                                                                              :> (CanThrow
                                                                                                                    'TeamNotFound
                                                                                                                  :> (CanThrow
                                                                                                                        TeamFeatureError
                                                                                                                      :> (CanThrowMany
                                                                                                                            '[]
                                                                                                                          :> ("teams"
                                                                                                                              :> (Capture
                                                                                                                                    "tid"
                                                                                                                                    TeamId
                                                                                                                                  :> ("features"
                                                                                                                                      :> ("searchVisibilityInbound"
                                                                                                                                          :> (ReqBody
                                                                                                                                                '[JSON]
                                                                                                                                                (Feature
                                                                                                                                                   SearchVisibilityInboundConfig)
                                                                                                                                              :> Put
                                                                                                                                                   '[JSON]
                                                                                                                                                   (LockableFeature
                                                                                                                                                      SearchVisibilityInboundConfig)))))))))))))
                                                                                               :<|> Named
                                                                                                      '("ipatch",
                                                                                                        SearchVisibilityInboundConfig)
                                                                                                      (Description
                                                                                                         ""
                                                                                                       :> (Summary
                                                                                                             "Patch config for searchVisibilityInbound"
                                                                                                           :> (CanThrow
                                                                                                                 OperationDenied
                                                                                                               :> (CanThrow
                                                                                                                     'NotATeamMember
                                                                                                                   :> (CanThrow
                                                                                                                         'TeamNotFound
                                                                                                                       :> (CanThrow
                                                                                                                             TeamFeatureError
                                                                                                                           :> (CanThrowMany
                                                                                                                                 '[]
                                                                                                                               :> ("teams"
                                                                                                                                   :> (Capture
                                                                                                                                         "tid"
                                                                                                                                         TeamId
                                                                                                                                       :> ("features"
                                                                                                                                           :> ("searchVisibilityInbound"
                                                                                                                                               :> (ReqBody
                                                                                                                                                     '[JSON]
                                                                                                                                                     (LockableFeaturePatch
                                                                                                                                                        SearchVisibilityInboundConfig)
                                                                                                                                                   :> Patch
                                                                                                                                                        '[JSON]
                                                                                                                                                        (LockableFeature
                                                                                                                                                           SearchVisibilityInboundConfig)))))))))))))))
                                                                                        :<|> ((Named
                                                                                                 '("iget",
                                                                                                   ValidateSAMLEmailsConfig)
                                                                                                 (Description
                                                                                                    ""
                                                                                                  :> (Summary
                                                                                                        "Get config for validateSAMLemails"
                                                                                                      :> (CanThrow
                                                                                                            OperationDenied
                                                                                                          :> (CanThrow
                                                                                                                'NotATeamMember
                                                                                                              :> (CanThrow
                                                                                                                    'TeamNotFound
                                                                                                                  :> ("teams"
                                                                                                                      :> (Capture
                                                                                                                            "tid"
                                                                                                                            TeamId
                                                                                                                          :> ("features"
                                                                                                                              :> ("validateSAMLemails"
                                                                                                                                  :> Get
                                                                                                                                       '[JSON]
                                                                                                                                       (LockableFeature
                                                                                                                                          ValidateSAMLEmailsConfig))))))))))
                                                                                               :<|> (Named
                                                                                                       '("iput",
                                                                                                         ValidateSAMLEmailsConfig)
                                                                                                       (Description
                                                                                                          ""
                                                                                                        :> (Summary
                                                                                                              "Put config for validateSAMLemails"
                                                                                                            :> (CanThrow
                                                                                                                  OperationDenied
                                                                                                                :> (CanThrow
                                                                                                                      'NotATeamMember
                                                                                                                    :> (CanThrow
                                                                                                                          'TeamNotFound
                                                                                                                        :> (CanThrow
                                                                                                                              TeamFeatureError
                                                                                                                            :> (CanThrowMany
                                                                                                                                  '[]
                                                                                                                                :> ("teams"
                                                                                                                                    :> (Capture
                                                                                                                                          "tid"
                                                                                                                                          TeamId
                                                                                                                                        :> ("features"
                                                                                                                                            :> ("validateSAMLemails"
                                                                                                                                                :> (ReqBody
                                                                                                                                                      '[JSON]
                                                                                                                                                      (Feature
                                                                                                                                                         ValidateSAMLEmailsConfig)
                                                                                                                                                    :> Put
                                                                                                                                                         '[JSON]
                                                                                                                                                         (LockableFeature
                                                                                                                                                            ValidateSAMLEmailsConfig)))))))))))))
                                                                                                     :<|> Named
                                                                                                            '("ipatch",
                                                                                                              ValidateSAMLEmailsConfig)
                                                                                                            (Description
                                                                                                               ""
                                                                                                             :> (Summary
                                                                                                                   "Patch config for validateSAMLemails"
                                                                                                                 :> (CanThrow
                                                                                                                       OperationDenied
                                                                                                                     :> (CanThrow
                                                                                                                           'NotATeamMember
                                                                                                                         :> (CanThrow
                                                                                                                               'TeamNotFound
                                                                                                                             :> (CanThrow
                                                                                                                                   TeamFeatureError
                                                                                                                                 :> (CanThrowMany
                                                                                                                                       '[]
                                                                                                                                     :> ("teams"
                                                                                                                                         :> (Capture
                                                                                                                                               "tid"
                                                                                                                                               TeamId
                                                                                                                                             :> ("features"
                                                                                                                                                 :> ("validateSAMLemails"
                                                                                                                                                     :> (ReqBody
                                                                                                                                                           '[JSON]
                                                                                                                                                           (LockableFeaturePatch
                                                                                                                                                              ValidateSAMLEmailsConfig)
                                                                                                                                                         :> Patch
                                                                                                                                                              '[JSON]
                                                                                                                                                              (LockableFeature
                                                                                                                                                                 ValidateSAMLEmailsConfig)))))))))))))))
                                                                                              :<|> ((Named
                                                                                                       '("iget",
                                                                                                         DigitalSignaturesConfig)
                                                                                                       (Description
                                                                                                          ""
                                                                                                        :> (Summary
                                                                                                              "Get config for digitalSignatures"
                                                                                                            :> (CanThrow
                                                                                                                  OperationDenied
                                                                                                                :> (CanThrow
                                                                                                                      'NotATeamMember
                                                                                                                    :> (CanThrow
                                                                                                                          'TeamNotFound
                                                                                                                        :> ("teams"
                                                                                                                            :> (Capture
                                                                                                                                  "tid"
                                                                                                                                  TeamId
                                                                                                                                :> ("features"
                                                                                                                                    :> ("digitalSignatures"
                                                                                                                                        :> Get
                                                                                                                                             '[JSON]
                                                                                                                                             (LockableFeature
                                                                                                                                                DigitalSignaturesConfig))))))))))
                                                                                                     :<|> (Named
                                                                                                             '("iput",
                                                                                                               DigitalSignaturesConfig)
                                                                                                             (Description
                                                                                                                ""
                                                                                                              :> (Summary
                                                                                                                    "Put config for digitalSignatures"
                                                                                                                  :> (CanThrow
                                                                                                                        OperationDenied
                                                                                                                      :> (CanThrow
                                                                                                                            'NotATeamMember
                                                                                                                          :> (CanThrow
                                                                                                                                'TeamNotFound
                                                                                                                              :> (CanThrow
                                                                                                                                    TeamFeatureError
                                                                                                                                  :> (CanThrowMany
                                                                                                                                        '[]
                                                                                                                                      :> ("teams"
                                                                                                                                          :> (Capture
                                                                                                                                                "tid"
                                                                                                                                                TeamId
                                                                                                                                              :> ("features"
                                                                                                                                                  :> ("digitalSignatures"
                                                                                                                                                      :> (ReqBody
                                                                                                                                                            '[JSON]
                                                                                                                                                            (Feature
                                                                                                                                                               DigitalSignaturesConfig)
                                                                                                                                                          :> Put
                                                                                                                                                               '[JSON]
                                                                                                                                                               (LockableFeature
                                                                                                                                                                  DigitalSignaturesConfig)))))))))))))
                                                                                                           :<|> Named
                                                                                                                  '("ipatch",
                                                                                                                    DigitalSignaturesConfig)
                                                                                                                  (Description
                                                                                                                     ""
                                                                                                                   :> (Summary
                                                                                                                         "Patch config for digitalSignatures"
                                                                                                                       :> (CanThrow
                                                                                                                             OperationDenied
                                                                                                                           :> (CanThrow
                                                                                                                                 'NotATeamMember
                                                                                                                               :> (CanThrow
                                                                                                                                     'TeamNotFound
                                                                                                                                   :> (CanThrow
                                                                                                                                         TeamFeatureError
                                                                                                                                       :> (CanThrowMany
                                                                                                                                             '[]
                                                                                                                                           :> ("teams"
                                                                                                                                               :> (Capture
                                                                                                                                                     "tid"
                                                                                                                                                     TeamId
                                                                                                                                                   :> ("features"
                                                                                                                                                       :> ("digitalSignatures"
                                                                                                                                                           :> (ReqBody
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 (LockableFeaturePatch
                                                                                                                                                                    DigitalSignaturesConfig)
                                                                                                                                                               :> Patch
                                                                                                                                                                    '[JSON]
                                                                                                                                                                    (LockableFeature
                                                                                                                                                                       DigitalSignaturesConfig)))))))))))))))
                                                                                                    :<|> ((Named
                                                                                                             '("iget",
                                                                                                               AppLockConfig)
                                                                                                             (Description
                                                                                                                ""
                                                                                                              :> (Summary
                                                                                                                    "Get config for appLock"
                                                                                                                  :> (CanThrow
                                                                                                                        OperationDenied
                                                                                                                      :> (CanThrow
                                                                                                                            'NotATeamMember
                                                                                                                          :> (CanThrow
                                                                                                                                'TeamNotFound
                                                                                                                              :> ("teams"
                                                                                                                                  :> (Capture
                                                                                                                                        "tid"
                                                                                                                                        TeamId
                                                                                                                                      :> ("features"
                                                                                                                                          :> ("appLock"
                                                                                                                                              :> Get
                                                                                                                                                   '[JSON]
                                                                                                                                                   (LockableFeature
                                                                                                                                                      AppLockConfig))))))))))
                                                                                                           :<|> (Named
                                                                                                                   '("iput",
                                                                                                                     AppLockConfig)
                                                                                                                   (Description
                                                                                                                      ""
                                                                                                                    :> (Summary
                                                                                                                          "Put config for appLock"
                                                                                                                        :> (CanThrow
                                                                                                                              OperationDenied
                                                                                                                            :> (CanThrow
                                                                                                                                  'NotATeamMember
                                                                                                                                :> (CanThrow
                                                                                                                                      'TeamNotFound
                                                                                                                                    :> (CanThrow
                                                                                                                                          TeamFeatureError
                                                                                                                                        :> (CanThrowMany
                                                                                                                                              '[]
                                                                                                                                            :> ("teams"
                                                                                                                                                :> (Capture
                                                                                                                                                      "tid"
                                                                                                                                                      TeamId
                                                                                                                                                    :> ("features"
                                                                                                                                                        :> ("appLock"
                                                                                                                                                            :> (ReqBody
                                                                                                                                                                  '[JSON]
                                                                                                                                                                  (Feature
                                                                                                                                                                     AppLockConfig)
                                                                                                                                                                :> Put
                                                                                                                                                                     '[JSON]
                                                                                                                                                                     (LockableFeature
                                                                                                                                                                        AppLockConfig)))))))))))))
                                                                                                                 :<|> Named
                                                                                                                        '("ipatch",
                                                                                                                          AppLockConfig)
                                                                                                                        (Description
                                                                                                                           ""
                                                                                                                         :> (Summary
                                                                                                                               "Patch config for appLock"
                                                                                                                             :> (CanThrow
                                                                                                                                   OperationDenied
                                                                                                                                 :> (CanThrow
                                                                                                                                       'NotATeamMember
                                                                                                                                     :> (CanThrow
                                                                                                                                           'TeamNotFound
                                                                                                                                         :> (CanThrow
                                                                                                                                               TeamFeatureError
                                                                                                                                             :> (CanThrowMany
                                                                                                                                                   '[]
                                                                                                                                                 :> ("teams"
                                                                                                                                                     :> (Capture
                                                                                                                                                           "tid"
                                                                                                                                                           TeamId
                                                                                                                                                         :> ("features"
                                                                                                                                                             :> ("appLock"
                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                       '[JSON]
                                                                                                                                                                       (LockableFeaturePatch
                                                                                                                                                                          AppLockConfig)
                                                                                                                                                                     :> Patch
                                                                                                                                                                          '[JSON]
                                                                                                                                                                          (LockableFeature
                                                                                                                                                                             AppLockConfig)))))))))))))))
                                                                                                          :<|> ((Named
                                                                                                                   '("iget",
                                                                                                                     FileSharingConfig)
                                                                                                                   (Description
                                                                                                                      ""
                                                                                                                    :> (Summary
                                                                                                                          "Get config for fileSharing"
                                                                                                                        :> (CanThrow
                                                                                                                              OperationDenied
                                                                                                                            :> (CanThrow
                                                                                                                                  'NotATeamMember
                                                                                                                                :> (CanThrow
                                                                                                                                      'TeamNotFound
                                                                                                                                    :> ("teams"
                                                                                                                                        :> (Capture
                                                                                                                                              "tid"
                                                                                                                                              TeamId
                                                                                                                                            :> ("features"
                                                                                                                                                :> ("fileSharing"
                                                                                                                                                    :> Get
                                                                                                                                                         '[JSON]
                                                                                                                                                         (LockableFeature
                                                                                                                                                            FileSharingConfig))))))))))
                                                                                                                 :<|> (Named
                                                                                                                         '("iput",
                                                                                                                           FileSharingConfig)
                                                                                                                         (Description
                                                                                                                            ""
                                                                                                                          :> (Summary
                                                                                                                                "Put config for fileSharing"
                                                                                                                              :> (CanThrow
                                                                                                                                    OperationDenied
                                                                                                                                  :> (CanThrow
                                                                                                                                        'NotATeamMember
                                                                                                                                      :> (CanThrow
                                                                                                                                            'TeamNotFound
                                                                                                                                          :> (CanThrow
                                                                                                                                                TeamFeatureError
                                                                                                                                              :> (CanThrowMany
                                                                                                                                                    '[]
                                                                                                                                                  :> ("teams"
                                                                                                                                                      :> (Capture
                                                                                                                                                            "tid"
                                                                                                                                                            TeamId
                                                                                                                                                          :> ("features"
                                                                                                                                                              :> ("fileSharing"
                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                        '[JSON]
                                                                                                                                                                        (Feature
                                                                                                                                                                           FileSharingConfig)
                                                                                                                                                                      :> Put
                                                                                                                                                                           '[JSON]
                                                                                                                                                                           (LockableFeature
                                                                                                                                                                              FileSharingConfig)))))))))))))
                                                                                                                       :<|> Named
                                                                                                                              '("ipatch",
                                                                                                                                FileSharingConfig)
                                                                                                                              (Description
                                                                                                                                 ""
                                                                                                                               :> (Summary
                                                                                                                                     "Patch config for fileSharing"
                                                                                                                                   :> (CanThrow
                                                                                                                                         OperationDenied
                                                                                                                                       :> (CanThrow
                                                                                                                                             'NotATeamMember
                                                                                                                                           :> (CanThrow
                                                                                                                                                 'TeamNotFound
                                                                                                                                               :> (CanThrow
                                                                                                                                                     TeamFeatureError
                                                                                                                                                   :> (CanThrowMany
                                                                                                                                                         '[]
                                                                                                                                                       :> ("teams"
                                                                                                                                                           :> (Capture
                                                                                                                                                                 "tid"
                                                                                                                                                                 TeamId
                                                                                                                                                               :> ("features"
                                                                                                                                                                   :> ("fileSharing"
                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                             '[JSON]
                                                                                                                                                                             (LockableFeaturePatch
                                                                                                                                                                                FileSharingConfig)
                                                                                                                                                                           :> Patch
                                                                                                                                                                                '[JSON]
                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                   FileSharingConfig)))))))))))))))
                                                                                                                :<|> (Named
                                                                                                                        '("iget",
                                                                                                                          ClassifiedDomainsConfig)
                                                                                                                        (Description
                                                                                                                           ""
                                                                                                                         :> (Summary
                                                                                                                               "Get config for classifiedDomains"
                                                                                                                             :> (CanThrow
                                                                                                                                   OperationDenied
                                                                                                                                 :> (CanThrow
                                                                                                                                       'NotATeamMember
                                                                                                                                     :> (CanThrow
                                                                                                                                           'TeamNotFound
                                                                                                                                         :> ("teams"
                                                                                                                                             :> (Capture
                                                                                                                                                   "tid"
                                                                                                                                                   TeamId
                                                                                                                                                 :> ("features"
                                                                                                                                                     :> ("classifiedDomains"
                                                                                                                                                         :> Get
                                                                                                                                                              '[JSON]
                                                                                                                                                              (LockableFeature
                                                                                                                                                                 ClassifiedDomainsConfig))))))))))
                                                                                                                      :<|> ((Named
                                                                                                                               '("iget",
                                                                                                                                 ConferenceCallingConfig)
                                                                                                                               (Description
                                                                                                                                  ""
                                                                                                                                :> (Summary
                                                                                                                                      "Get config for conferenceCalling"
                                                                                                                                    :> (CanThrow
                                                                                                                                          OperationDenied
                                                                                                                                        :> (CanThrow
                                                                                                                                              'NotATeamMember
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'TeamNotFound
                                                                                                                                                :> ("teams"
                                                                                                                                                    :> (Capture
                                                                                                                                                          "tid"
                                                                                                                                                          TeamId
                                                                                                                                                        :> ("features"
                                                                                                                                                            :> ("conferenceCalling"
                                                                                                                                                                :> Get
                                                                                                                                                                     '[JSON]
                                                                                                                                                                     (LockableFeature
                                                                                                                                                                        ConferenceCallingConfig))))))))))
                                                                                                                             :<|> (Named
                                                                                                                                     '("iput",
                                                                                                                                       ConferenceCallingConfig)
                                                                                                                                     (Description
                                                                                                                                        ""
                                                                                                                                      :> (Summary
                                                                                                                                            "Put config for conferenceCalling"
                                                                                                                                          :> (CanThrow
                                                                                                                                                OperationDenied
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'NotATeamMember
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'TeamNotFound
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            TeamFeatureError
                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                '[]
                                                                                                                                                              :> ("teams"
                                                                                                                                                                  :> (Capture
                                                                                                                                                                        "tid"
                                                                                                                                                                        TeamId
                                                                                                                                                                      :> ("features"
                                                                                                                                                                          :> ("conferenceCalling"
                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                    (Feature
                                                                                                                                                                                       ConferenceCallingConfig)
                                                                                                                                                                                  :> Put
                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                          ConferenceCallingConfig)))))))))))))
                                                                                                                                   :<|> Named
                                                                                                                                          '("ipatch",
                                                                                                                                            ConferenceCallingConfig)
                                                                                                                                          (Description
                                                                                                                                             ""
                                                                                                                                           :> (Summary
                                                                                                                                                 "Patch config for conferenceCalling"
                                                                                                                                               :> (CanThrow
                                                                                                                                                     OperationDenied
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'NotATeamMember
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'TeamNotFound
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 TeamFeatureError
                                                                                                                                                               :> (CanThrowMany
                                                                                                                                                                     '[]
                                                                                                                                                                   :> ("teams"
                                                                                                                                                                       :> (Capture
                                                                                                                                                                             "tid"
                                                                                                                                                                             TeamId
                                                                                                                                                                           :> ("features"
                                                                                                                                                                               :> ("conferenceCalling"
                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                         (LockableFeaturePatch
                                                                                                                                                                                            ConferenceCallingConfig)
                                                                                                                                                                                       :> Patch
                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                               ConferenceCallingConfig)))))))))))))))
                                                                                                                            :<|> ((Named
                                                                                                                                     '("iget",
                                                                                                                                       SelfDeletingMessagesConfig)
                                                                                                                                     (Description
                                                                                                                                        ""
                                                                                                                                      :> (Summary
                                                                                                                                            "Get config for selfDeletingMessages"
                                                                                                                                          :> (CanThrow
                                                                                                                                                OperationDenied
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'NotATeamMember
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'TeamNotFound
                                                                                                                                                      :> ("teams"
                                                                                                                                                          :> (Capture
                                                                                                                                                                "tid"
                                                                                                                                                                TeamId
                                                                                                                                                              :> ("features"
                                                                                                                                                                  :> ("selfDeletingMessages"
                                                                                                                                                                      :> Get
                                                                                                                                                                           '[JSON]
                                                                                                                                                                           (LockableFeature
                                                                                                                                                                              SelfDeletingMessagesConfig))))))))))
                                                                                                                                   :<|> (Named
                                                                                                                                           '("iput",
                                                                                                                                             SelfDeletingMessagesConfig)
                                                                                                                                           (Description
                                                                                                                                              ""
                                                                                                                                            :> (Summary
                                                                                                                                                  "Put config for selfDeletingMessages"
                                                                                                                                                :> (CanThrow
                                                                                                                                                      OperationDenied
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'NotATeamMember
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'TeamNotFound
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  TeamFeatureError
                                                                                                                                                                :> (CanThrowMany
                                                                                                                                                                      '[]
                                                                                                                                                                    :> ("teams"
                                                                                                                                                                        :> (Capture
                                                                                                                                                                              "tid"
                                                                                                                                                                              TeamId
                                                                                                                                                                            :> ("features"
                                                                                                                                                                                :> ("selfDeletingMessages"
                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                          (Feature
                                                                                                                                                                                             SelfDeletingMessagesConfig)
                                                                                                                                                                                        :> Put
                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                SelfDeletingMessagesConfig)))))))))))))
                                                                                                                                         :<|> Named
                                                                                                                                                '("ipatch",
                                                                                                                                                  SelfDeletingMessagesConfig)
                                                                                                                                                (Description
                                                                                                                                                   ""
                                                                                                                                                 :> (Summary
                                                                                                                                                       "Patch config for selfDeletingMessages"
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           OperationDenied
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'NotATeamMember
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       TeamFeatureError
                                                                                                                                                                     :> (CanThrowMany
                                                                                                                                                                           '[]
                                                                                                                                                                         :> ("teams"
                                                                                                                                                                             :> (Capture
                                                                                                                                                                                   "tid"
                                                                                                                                                                                   TeamId
                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                     :> ("selfDeletingMessages"
                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                               (LockableFeaturePatch
                                                                                                                                                                                                  SelfDeletingMessagesConfig)
                                                                                                                                                                                             :> Patch
                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                     SelfDeletingMessagesConfig)))))))))))))))
                                                                                                                                  :<|> ((Named
                                                                                                                                           '("iget",
                                                                                                                                             GuestLinksConfig)
                                                                                                                                           (Description
                                                                                                                                              ""
                                                                                                                                            :> (Summary
                                                                                                                                                  "Get config for conversationGuestLinks"
                                                                                                                                                :> (CanThrow
                                                                                                                                                      OperationDenied
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'NotATeamMember
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'TeamNotFound
                                                                                                                                                            :> ("teams"
                                                                                                                                                                :> (Capture
                                                                                                                                                                      "tid"
                                                                                                                                                                      TeamId
                                                                                                                                                                    :> ("features"
                                                                                                                                                                        :> ("conversationGuestLinks"
                                                                                                                                                                            :> Get
                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                    GuestLinksConfig))))))))))
                                                                                                                                         :<|> (Named
                                                                                                                                                 '("iput",
                                                                                                                                                   GuestLinksConfig)
                                                                                                                                                 (Description
                                                                                                                                                    ""
                                                                                                                                                  :> (Summary
                                                                                                                                                        "Put config for conversationGuestLinks"
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            OperationDenied
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'NotATeamMember
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                            '[]
                                                                                                                                                                          :> ("teams"
                                                                                                                                                                              :> (Capture
                                                                                                                                                                                    "tid"
                                                                                                                                                                                    TeamId
                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                      :> ("conversationGuestLinks"
                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                (Feature
                                                                                                                                                                                                   GuestLinksConfig)
                                                                                                                                                                                              :> Put
                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                      GuestLinksConfig)))))))))))))
                                                                                                                                               :<|> Named
                                                                                                                                                      '("ipatch",
                                                                                                                                                        GuestLinksConfig)
                                                                                                                                                      (Description
                                                                                                                                                         ""
                                                                                                                                                       :> (Summary
                                                                                                                                                             "Patch config for conversationGuestLinks"
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 OperationDenied
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             TeamFeatureError
                                                                                                                                                                           :> (CanThrowMany
                                                                                                                                                                                 '[]
                                                                                                                                                                               :> ("teams"
                                                                                                                                                                                   :> (Capture
                                                                                                                                                                                         "tid"
                                                                                                                                                                                         TeamId
                                                                                                                                                                                       :> ("features"
                                                                                                                                                                                           :> ("conversationGuestLinks"
                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                     (LockableFeaturePatch
                                                                                                                                                                                                        GuestLinksConfig)
                                                                                                                                                                                                   :> Patch
                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                           GuestLinksConfig)))))))))))))))
                                                                                                                                        :<|> ((Named
                                                                                                                                                 '("iget",
                                                                                                                                                   SndFactorPasswordChallengeConfig)
                                                                                                                                                 (Description
                                                                                                                                                    ""
                                                                                                                                                  :> (Summary
                                                                                                                                                        "Get config for sndFactorPasswordChallenge"
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            OperationDenied
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'NotATeamMember
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                  :> ("teams"
                                                                                                                                                                      :> (Capture
                                                                                                                                                                            "tid"
                                                                                                                                                                            TeamId
                                                                                                                                                                          :> ("features"
                                                                                                                                                                              :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                  :> Get
                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                          SndFactorPasswordChallengeConfig))))))))))
                                                                                                                                               :<|> (Named
                                                                                                                                                       '("iput",
                                                                                                                                                         SndFactorPasswordChallengeConfig)
                                                                                                                                                       (Description
                                                                                                                                                          ""
                                                                                                                                                        :> (Summary
                                                                                                                                                              "Put config for sndFactorPasswordChallenge"
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  OperationDenied
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              TeamFeatureError
                                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                                  '[]
                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                          "tid"
                                                                                                                                                                                          TeamId
                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                            :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                      (Feature
                                                                                                                                                                                                         SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                    :> Put
                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                            SndFactorPasswordChallengeConfig)))))))))))))
                                                                                                                                                     :<|> Named
                                                                                                                                                            '("ipatch",
                                                                                                                                                              SndFactorPasswordChallengeConfig)
                                                                                                                                                            (Description
                                                                                                                                                               ""
                                                                                                                                                             :> (Summary
                                                                                                                                                                   "Patch config for sndFactorPasswordChallenge"
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       OperationDenied
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   TeamFeatureError
                                                                                                                                                                                 :> (CanThrowMany
                                                                                                                                                                                       '[]
                                                                                                                                                                                     :> ("teams"
                                                                                                                                                                                         :> (Capture
                                                                                                                                                                                               "tid"
                                                                                                                                                                                               TeamId
                                                                                                                                                                                             :> ("features"
                                                                                                                                                                                                 :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           (LockableFeaturePatch
                                                                                                                                                                                                              SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                         :> Patch
                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                 SndFactorPasswordChallengeConfig)))))))))))))))
                                                                                                                                              :<|> ((Named
                                                                                                                                                       '("iget",
                                                                                                                                                         MLSConfig)
                                                                                                                                                       (Description
                                                                                                                                                          ""
                                                                                                                                                        :> (Summary
                                                                                                                                                              "Get config for mls"
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  OperationDenied
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                        :> ("teams"
                                                                                                                                                                            :> (Capture
                                                                                                                                                                                  "tid"
                                                                                                                                                                                  TeamId
                                                                                                                                                                                :> ("features"
                                                                                                                                                                                    :> ("mls"
                                                                                                                                                                                        :> Get
                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                MLSConfig))))))))))
                                                                                                                                                     :<|> (Named
                                                                                                                                                             '("iput",
                                                                                                                                                               MLSConfig)
                                                                                                                                                             (Description
                                                                                                                                                                ""
                                                                                                                                                              :> (Summary
                                                                                                                                                                    "Put config for mls"
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        OperationDenied
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    TeamFeatureError
                                                                                                                                                                                  :> (CanThrowMany
                                                                                                                                                                                        '[]
                                                                                                                                                                                      :> ("teams"
                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                "tid"
                                                                                                                                                                                                TeamId
                                                                                                                                                                                              :> ("features"
                                                                                                                                                                                                  :> ("mls"
                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                            (Feature
                                                                                                                                                                                                               MLSConfig)
                                                                                                                                                                                                          :> Put
                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                  MLSConfig)))))))))))))
                                                                                                                                                           :<|> Named
                                                                                                                                                                  '("ipatch",
                                                                                                                                                                    MLSConfig)
                                                                                                                                                                  (Description
                                                                                                                                                                     ""
                                                                                                                                                                   :> (Summary
                                                                                                                                                                         "Patch config for mls"
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             OperationDenied
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         TeamFeatureError
                                                                                                                                                                                       :> (CanThrowMany
                                                                                                                                                                                             '[]
                                                                                                                                                                                           :> ("teams"
                                                                                                                                                                                               :> (Capture
                                                                                                                                                                                                     "tid"
                                                                                                                                                                                                     TeamId
                                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                                       :> ("mls"
                                                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                 (LockableFeaturePatch
                                                                                                                                                                                                                    MLSConfig)
                                                                                                                                                                                                               :> Patch
                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                       MLSConfig)))))))))))))))
                                                                                                                                                    :<|> ((Named
                                                                                                                                                             '("iget",
                                                                                                                                                               ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                             (Description
                                                                                                                                                                ""
                                                                                                                                                              :> (Summary
                                                                                                                                                                    "Get config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        OperationDenied
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                        "tid"
                                                                                                                                                                                        TeamId
                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                          :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                              :> Get
                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                      ExposeInvitationURLsToTeamAdminConfig))))))))))
                                                                                                                                                           :<|> (Named
                                                                                                                                                                   '("iput",
                                                                                                                                                                     ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                   (Description
                                                                                                                                                                      ""
                                                                                                                                                                    :> (Summary
                                                                                                                                                                          "Put config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              OperationDenied
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          TeamFeatureError
                                                                                                                                                                                        :> (CanThrowMany
                                                                                                                                                                                              '[]
                                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                      "tid"
                                                                                                                                                                                                      TeamId
                                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                                        :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                  (Feature
                                                                                                                                                                                                                     ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                                                :> Put
                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                        ExposeInvitationURLsToTeamAdminConfig)))))))))))))
                                                                                                                                                                 :<|> Named
                                                                                                                                                                        '("ipatch",
                                                                                                                                                                          ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                        (Description
                                                                                                                                                                           ""
                                                                                                                                                                         :> (Summary
                                                                                                                                                                               "Patch config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   OperationDenied
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               TeamFeatureError
                                                                                                                                                                                             :> (CanThrowMany
                                                                                                                                                                                                   '[]
                                                                                                                                                                                                 :> ("teams"
                                                                                                                                                                                                     :> (Capture
                                                                                                                                                                                                           "tid"
                                                                                                                                                                                                           TeamId
                                                                                                                                                                                                         :> ("features"
                                                                                                                                                                                                             :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                       (LockableFeaturePatch
                                                                                                                                                                                                                          ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                                                     :> Patch
                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                                             ExposeInvitationURLsToTeamAdminConfig)))))))))))))))
                                                                                                                                                          :<|> ((Named
                                                                                                                                                                   '("iget",
                                                                                                                                                                     OutlookCalIntegrationConfig)
                                                                                                                                                                   (Description
                                                                                                                                                                      ""
                                                                                                                                                                    :> (Summary
                                                                                                                                                                          "Get config for outlookCalIntegration"
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              OperationDenied
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                    :> ("teams"
                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                              "tid"
                                                                                                                                                                                              TeamId
                                                                                                                                                                                            :> ("features"
                                                                                                                                                                                                :> ("outlookCalIntegration"
                                                                                                                                                                                                    :> Get
                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                            OutlookCalIntegrationConfig))))))))))
                                                                                                                                                                 :<|> (Named
                                                                                                                                                                         '("iput",
                                                                                                                                                                           OutlookCalIntegrationConfig)
                                                                                                                                                                         (Description
                                                                                                                                                                            ""
                                                                                                                                                                          :> (Summary
                                                                                                                                                                                "Put config for outlookCalIntegration"
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                TeamFeatureError
                                                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                                                    '[]
                                                                                                                                                                                                  :> ("teams"
                                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                                            "tid"
                                                                                                                                                                                                            TeamId
                                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                                              :> ("outlookCalIntegration"
                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                        (Feature
                                                                                                                                                                                                                           OutlookCalIntegrationConfig)
                                                                                                                                                                                                                      :> Put
                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                              OutlookCalIntegrationConfig)))))))))))))
                                                                                                                                                                       :<|> Named
                                                                                                                                                                              '("ipatch",
                                                                                                                                                                                OutlookCalIntegrationConfig)
                                                                                                                                                                              (Description
                                                                                                                                                                                 ""
                                                                                                                                                                               :> (Summary
                                                                                                                                                                                     "Patch config for outlookCalIntegration"
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     TeamFeatureError
                                                                                                                                                                                                   :> (CanThrowMany
                                                                                                                                                                                                         '[]
                                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                                 TeamId
                                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                                   :> ("outlookCalIntegration"
                                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                             (LockableFeaturePatch
                                                                                                                                                                                                                                OutlookCalIntegrationConfig)
                                                                                                                                                                                                                           :> Patch
                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                   OutlookCalIntegrationConfig)))))))))))))))
                                                                                                                                                                :<|> ((Named
                                                                                                                                                                         '("iget",
                                                                                                                                                                           MlsE2EIdConfig)
                                                                                                                                                                         (Description
                                                                                                                                                                            ""
                                                                                                                                                                          :> (Summary
                                                                                                                                                                                "Get config for mlsE2EId"
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                      :> ("mlsE2EId"
                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                  MlsE2EIdConfig))))))))))
                                                                                                                                                                       :<|> (Named
                                                                                                                                                                               '("iput",
                                                                                                                                                                                 MlsE2EIdConfig)
                                                                                                                                                                               (Description
                                                                                                                                                                                  ""
                                                                                                                                                                                :> (Summary
                                                                                                                                                                                      "Put config for mlsE2EId"
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          OperationDenied
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      TeamFeatureError
                                                                                                                                                                                                    :> (CanThrowMany
                                                                                                                                                                                                          '[]
                                                                                                                                                                                                        :> ("teams"
                                                                                                                                                                                                            :> (Capture
                                                                                                                                                                                                                  "tid"
                                                                                                                                                                                                                  TeamId
                                                                                                                                                                                                                :> ("features"
                                                                                                                                                                                                                    :> ("mlsE2EId"
                                                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                              (Feature
                                                                                                                                                                                                                                 MlsE2EIdConfig)
                                                                                                                                                                                                                            :> Put
                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                                    MlsE2EIdConfig)))))))))))))
                                                                                                                                                                             :<|> Named
                                                                                                                                                                                    '("ipatch",
                                                                                                                                                                                      MlsE2EIdConfig)
                                                                                                                                                                                    (Description
                                                                                                                                                                                       ""
                                                                                                                                                                                     :> (Summary
                                                                                                                                                                                           "Patch config for mlsE2EId"
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           TeamFeatureError
                                                                                                                                                                                                         :> (CanThrowMany
                                                                                                                                                                                                               '[]
                                                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                                       "tid"
                                                                                                                                                                                                                       TeamId
                                                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                                                         :> ("mlsE2EId"
                                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                   (LockableFeaturePatch
                                                                                                                                                                                                                                      MlsE2EIdConfig)
                                                                                                                                                                                                                                 :> Patch
                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                                         MlsE2EIdConfig)))))))))))))))
                                                                                                                                                                      :<|> ((Named
                                                                                                                                                                               '("iget",
                                                                                                                                                                                 MlsMigrationConfig)
                                                                                                                                                                               (Description
                                                                                                                                                                                  ""
                                                                                                                                                                                :> (Summary
                                                                                                                                                                                      "Get config for mlsMigration"
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          OperationDenied
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                          "tid"
                                                                                                                                                                                                          TeamId
                                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                                            :> ("mlsMigration"
                                                                                                                                                                                                                :> Get
                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                        MlsMigrationConfig))))))))))
                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                     '("iput",
                                                                                                                                                                                       MlsMigrationConfig)
                                                                                                                                                                                     (Description
                                                                                                                                                                                        ""
                                                                                                                                                                                      :> (Summary
                                                                                                                                                                                            "Put config for mlsMigration"
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            TeamFeatureError
                                                                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                                                                '[]
                                                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                                        "tid"
                                                                                                                                                                                                                        TeamId
                                                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                                                          :> ("mlsMigration"
                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                    (Feature
                                                                                                                                                                                                                                       MlsMigrationConfig)
                                                                                                                                                                                                                                  :> Put
                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                                          MlsMigrationConfig)))))))))))))
                                                                                                                                                                                   :<|> Named
                                                                                                                                                                                          '("ipatch",
                                                                                                                                                                                            MlsMigrationConfig)
                                                                                                                                                                                          (Description
                                                                                                                                                                                             ""
                                                                                                                                                                                           :> (Summary
                                                                                                                                                                                                 "Patch config for mlsMigration"
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                 TeamFeatureError
                                                                                                                                                                                                               :> (CanThrowMany
                                                                                                                                                                                                                     '[]
                                                                                                                                                                                                                   :> ("teams"
                                                                                                                                                                                                                       :> (Capture
                                                                                                                                                                                                                             "tid"
                                                                                                                                                                                                                             TeamId
                                                                                                                                                                                                                           :> ("features"
                                                                                                                                                                                                                               :> ("mlsMigration"
                                                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                         (LockableFeaturePatch
                                                                                                                                                                                                                                            MlsMigrationConfig)
                                                                                                                                                                                                                                       :> Patch
                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                                               MlsMigrationConfig)))))))))))))))
                                                                                                                                                                            :<|> ((Named
                                                                                                                                                                                     '("iget",
                                                                                                                                                                                       EnforceFileDownloadLocationConfig)
                                                                                                                                                                                     (Description
                                                                                                                                                                                        "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                      :> (Summary
                                                                                                                                                                                            "Get config for enforceFileDownloadLocation"
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                      :> ("teams"
                                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                                "tid"
                                                                                                                                                                                                                TeamId
                                                                                                                                                                                                              :> ("features"
                                                                                                                                                                                                                  :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                      :> Get
                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                              EnforceFileDownloadLocationConfig))))))))))
                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                           '("iput",
                                                                                                                                                                                             EnforceFileDownloadLocationConfig)
                                                                                                                                                                                           (Description
                                                                                                                                                                                              "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                            :> (Summary
                                                                                                                                                                                                  "Put config for enforceFileDownloadLocation"
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                  TeamFeatureError
                                                                                                                                                                                                                :> (CanThrowMany
                                                                                                                                                                                                                      '[]
                                                                                                                                                                                                                    :> ("teams"
                                                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                                                              "tid"
                                                                                                                                                                                                                              TeamId
                                                                                                                                                                                                                            :> ("features"
                                                                                                                                                                                                                                :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                          (Feature
                                                                                                                                                                                                                                             EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                        :> Put
                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                                EnforceFileDownloadLocationConfig)))))))))))))
                                                                                                                                                                                         :<|> Named
                                                                                                                                                                                                '("ipatch",
                                                                                                                                                                                                  EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                (Description
                                                                                                                                                                                                   "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                                 :> (Summary
                                                                                                                                                                                                       "Patch config for enforceFileDownloadLocation"
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           OperationDenied
                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                       TeamFeatureError
                                                                                                                                                                                                                     :> (CanThrowMany
                                                                                                                                                                                                                           '[]
                                                                                                                                                                                                                         :> ("teams"
                                                                                                                                                                                                                             :> (Capture
                                                                                                                                                                                                                                   "tid"
                                                                                                                                                                                                                                   TeamId
                                                                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                                                                     :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                               (LockableFeaturePatch
                                                                                                                                                                                                                                                  EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                             :> Patch
                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                                     EnforceFileDownloadLocationConfig)))))))))))))))
                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                          '("iget",
                                                                                                                                                                                            LimitedEventFanoutConfig)
                                                                                                                                                                                          (Description
                                                                                                                                                                                             ""
                                                                                                                                                                                           :> (Summary
                                                                                                                                                                                                 "Get config for limitedEventFanout"
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                                           :> ("teams"
                                                                                                                                                                                                               :> (Capture
                                                                                                                                                                                                                     "tid"
                                                                                                                                                                                                                     TeamId
                                                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                                                       :> ("limitedEventFanout"
                                                                                                                                                                                                                           :> Get
                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                   LimitedEventFanoutConfig))))))))))
                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                '("iput",
                                                                                                                                                                                                  LimitedEventFanoutConfig)
                                                                                                                                                                                                (Description
                                                                                                                                                                                                   ""
                                                                                                                                                                                                 :> (Summary
                                                                                                                                                                                                       "Put config for limitedEventFanout"
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           OperationDenied
                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                       TeamFeatureError
                                                                                                                                                                                                                     :> (CanThrowMany
                                                                                                                                                                                                                           '[]
                                                                                                                                                                                                                         :> ("teams"
                                                                                                                                                                                                                             :> (Capture
                                                                                                                                                                                                                                   "tid"
                                                                                                                                                                                                                                   TeamId
                                                                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                                                                     :> ("limitedEventFanout"
                                                                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                               (Feature
                                                                                                                                                                                                                                                  LimitedEventFanoutConfig)
                                                                                                                                                                                                                                             :> Put
                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                                     LimitedEventFanoutConfig)))))))))))))
                                                                                                                                                                                              :<|> Named
                                                                                                                                                                                                     '("ipatch",
                                                                                                                                                                                                       LimitedEventFanoutConfig)
                                                                                                                                                                                                     (Description
                                                                                                                                                                                                        ""
                                                                                                                                                                                                      :> (Summary
                                                                                                                                                                                                            "Patch config for limitedEventFanout"
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            TeamFeatureError
                                                                                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                                                                                '[]
                                                                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                                                        "tid"
                                                                                                                                                                                                                                        TeamId
                                                                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                                                                          :> ("limitedEventFanout"
                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                    (LockableFeaturePatch
                                                                                                                                                                                                                                                       LimitedEventFanoutConfig)
                                                                                                                                                                                                                                                  :> Patch
                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                                                          LimitedEventFanoutConfig))))))))))))))))))))))))))))))))))
                                                                     :<|> (Named
                                                                             '("ilock",
                                                                               FileSharingConfig)
                                                                             (Summary
                                                                                "(Un-)lock fileSharing"
                                                                              :> (Description ""
                                                                                  :> (CanThrow
                                                                                        'NotATeamMember
                                                                                      :> (CanThrow
                                                                                            'TeamNotFound
                                                                                          :> ("teams"
                                                                                              :> (Capture
                                                                                                    "tid"
                                                                                                    TeamId
                                                                                                  :> ("features"
                                                                                                      :> ("fileSharing"
                                                                                                          :> (Capture
                                                                                                                "lockStatus"
                                                                                                                LockStatus
                                                                                                              :> Put
                                                                                                                   '[JSON]
                                                                                                                   LockStatusResponse)))))))))
                                                                           :<|> (Named
                                                                                   '("ilock",
                                                                                     ConferenceCallingConfig)
                                                                                   (Summary
                                                                                      "(Un-)lock conferenceCalling"
                                                                                    :> (Description
                                                                                          ""
                                                                                        :> (CanThrow
                                                                                              'NotATeamMember
                                                                                            :> (CanThrow
                                                                                                  'TeamNotFound
                                                                                                :> ("teams"
                                                                                                    :> (Capture
                                                                                                          "tid"
                                                                                                          TeamId
                                                                                                        :> ("features"
                                                                                                            :> ("conferenceCalling"
                                                                                                                :> (Capture
                                                                                                                      "lockStatus"
                                                                                                                      LockStatus
                                                                                                                    :> Put
                                                                                                                         '[JSON]
                                                                                                                         LockStatusResponse)))))))))
                                                                                 :<|> (Named
                                                                                         '("ilock",
                                                                                           SelfDeletingMessagesConfig)
                                                                                         (Summary
                                                                                            "(Un-)lock selfDeletingMessages"
                                                                                          :> (Description
                                                                                                ""
                                                                                              :> (CanThrow
                                                                                                    'NotATeamMember
                                                                                                  :> (CanThrow
                                                                                                        'TeamNotFound
                                                                                                      :> ("teams"
                                                                                                          :> (Capture
                                                                                                                "tid"
                                                                                                                TeamId
                                                                                                              :> ("features"
                                                                                                                  :> ("selfDeletingMessages"
                                                                                                                      :> (Capture
                                                                                                                            "lockStatus"
                                                                                                                            LockStatus
                                                                                                                          :> Put
                                                                                                                               '[JSON]
                                                                                                                               LockStatusResponse)))))))))
                                                                                       :<|> (Named
                                                                                               '("ilock",
                                                                                                 GuestLinksConfig)
                                                                                               (Summary
                                                                                                  "(Un-)lock conversationGuestLinks"
                                                                                                :> (Description
                                                                                                      ""
                                                                                                    :> (CanThrow
                                                                                                          'NotATeamMember
                                                                                                        :> (CanThrow
                                                                                                              'TeamNotFound
                                                                                                            :> ("teams"
                                                                                                                :> (Capture
                                                                                                                      "tid"
                                                                                                                      TeamId
                                                                                                                    :> ("features"
                                                                                                                        :> ("conversationGuestLinks"
                                                                                                                            :> (Capture
                                                                                                                                  "lockStatus"
                                                                                                                                  LockStatus
                                                                                                                                :> Put
                                                                                                                                     '[JSON]
                                                                                                                                     LockStatusResponse)))))))))
                                                                                             :<|> (Named
                                                                                                     '("ilock",
                                                                                                       SndFactorPasswordChallengeConfig)
                                                                                                     (Summary
                                                                                                        "(Un-)lock sndFactorPasswordChallenge"
                                                                                                      :> (Description
                                                                                                            ""
                                                                                                          :> (CanThrow
                                                                                                                'NotATeamMember
                                                                                                              :> (CanThrow
                                                                                                                    'TeamNotFound
                                                                                                                  :> ("teams"
                                                                                                                      :> (Capture
                                                                                                                            "tid"
                                                                                                                            TeamId
                                                                                                                          :> ("features"
                                                                                                                              :> ("sndFactorPasswordChallenge"
                                                                                                                                  :> (Capture
                                                                                                                                        "lockStatus"
                                                                                                                                        LockStatus
                                                                                                                                      :> Put
                                                                                                                                           '[JSON]
                                                                                                                                           LockStatusResponse)))))))))
                                                                                                   :<|> (Named
                                                                                                           '("ilock",
                                                                                                             MLSConfig)
                                                                                                           (Summary
                                                                                                              "(Un-)lock mls"
                                                                                                            :> (Description
                                                                                                                  ""
                                                                                                                :> (CanThrow
                                                                                                                      'NotATeamMember
                                                                                                                    :> (CanThrow
                                                                                                                          'TeamNotFound
                                                                                                                        :> ("teams"
                                                                                                                            :> (Capture
                                                                                                                                  "tid"
                                                                                                                                  TeamId
                                                                                                                                :> ("features"
                                                                                                                                    :> ("mls"
                                                                                                                                        :> (Capture
                                                                                                                                              "lockStatus"
                                                                                                                                              LockStatus
                                                                                                                                            :> Put
                                                                                                                                                 '[JSON]
                                                                                                                                                 LockStatusResponse)))))))))
                                                                                                         :<|> (Named
                                                                                                                 '("ilock",
                                                                                                                   OutlookCalIntegrationConfig)
                                                                                                                 (Summary
                                                                                                                    "(Un-)lock outlookCalIntegration"
                                                                                                                  :> (Description
                                                                                                                        ""
                                                                                                                      :> (CanThrow
                                                                                                                            'NotATeamMember
                                                                                                                          :> (CanThrow
                                                                                                                                'TeamNotFound
                                                                                                                              :> ("teams"
                                                                                                                                  :> (Capture
                                                                                                                                        "tid"
                                                                                                                                        TeamId
                                                                                                                                      :> ("features"
                                                                                                                                          :> ("outlookCalIntegration"
                                                                                                                                              :> (Capture
                                                                                                                                                    "lockStatus"
                                                                                                                                                    LockStatus
                                                                                                                                                  :> Put
                                                                                                                                                       '[JSON]
                                                                                                                                                       LockStatusResponse)))))))))
                                                                                                               :<|> (Named
                                                                                                                       '("ilock",
                                                                                                                         MlsE2EIdConfig)
                                                                                                                       (Summary
                                                                                                                          "(Un-)lock mlsE2EId"
                                                                                                                        :> (Description
                                                                                                                              ""
                                                                                                                            :> (CanThrow
                                                                                                                                  'NotATeamMember
                                                                                                                                :> (CanThrow
                                                                                                                                      'TeamNotFound
                                                                                                                                    :> ("teams"
                                                                                                                                        :> (Capture
                                                                                                                                              "tid"
                                                                                                                                              TeamId
                                                                                                                                            :> ("features"
                                                                                                                                                :> ("mlsE2EId"
                                                                                                                                                    :> (Capture
                                                                                                                                                          "lockStatus"
                                                                                                                                                          LockStatus
                                                                                                                                                        :> Put
                                                                                                                                                             '[JSON]
                                                                                                                                                             LockStatusResponse)))))))))
                                                                                                                     :<|> (Named
                                                                                                                             '("ilock",
                                                                                                                               MlsMigrationConfig)
                                                                                                                             (Summary
                                                                                                                                "(Un-)lock mlsMigration"
                                                                                                                              :> (Description
                                                                                                                                    ""
                                                                                                                                  :> (CanThrow
                                                                                                                                        'NotATeamMember
                                                                                                                                      :> (CanThrow
                                                                                                                                            'TeamNotFound
                                                                                                                                          :> ("teams"
                                                                                                                                              :> (Capture
                                                                                                                                                    "tid"
                                                                                                                                                    TeamId
                                                                                                                                                  :> ("features"
                                                                                                                                                      :> ("mlsMigration"
                                                                                                                                                          :> (Capture
                                                                                                                                                                "lockStatus"
                                                                                                                                                                LockStatus
                                                                                                                                                              :> Put
                                                                                                                                                                   '[JSON]
                                                                                                                                                                   LockStatusResponse)))))))))
                                                                                                                           :<|> (Named
                                                                                                                                   '("ilock",
                                                                                                                                     EnforceFileDownloadLocationConfig)
                                                                                                                                   (Summary
                                                                                                                                      "(Un-)lock enforceFileDownloadLocation"
                                                                                                                                    :> (Description
                                                                                                                                          "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                        :> (CanThrow
                                                                                                                                              'NotATeamMember
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'TeamNotFound
                                                                                                                                                :> ("teams"
                                                                                                                                                    :> (Capture
                                                                                                                                                          "tid"
                                                                                                                                                          TeamId
                                                                                                                                                        :> ("features"
                                                                                                                                                            :> ("enforceFileDownloadLocation"
                                                                                                                                                                :> (Capture
                                                                                                                                                                      "lockStatus"
                                                                                                                                                                      LockStatus
                                                                                                                                                                    :> Put
                                                                                                                                                                         '[JSON]
                                                                                                                                                                         LockStatusResponse)))))))))
                                                                                                                                 :<|> (Named
                                                                                                                                         '("igetmulti",
                                                                                                                                           SearchVisibilityInboundConfig)
                                                                                                                                         (Summary
                                                                                                                                            "Get team feature status in bulk for feature searchVisibilityInbound"
                                                                                                                                          :> ("features-multi-teams"
                                                                                                                                              :> ("searchVisibilityInbound"
                                                                                                                                                  :> (ReqBody
                                                                                                                                                        '[JSON]
                                                                                                                                                        TeamFeatureNoConfigMultiRequest
                                                                                                                                                      :> Post
                                                                                                                                                           '[JSON]
                                                                                                                                                           (TeamFeatureNoConfigMultiResponse
                                                                                                                                                              SearchVisibilityInboundConfig)))))
                                                                                                                                       :<|> Named
                                                                                                                                              "feature-configs-internal"
                                                                                                                                              (Summary
                                                                                                                                                 "Get all feature configs (for user/team; if n/a fall back to site config)."
                                                                                                                                               :> ("feature-configs"
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         OperationDenied
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'NotATeamMember
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 'TeamNotFound
                                                                                                                                                               :> (QueryParam'
                                                                                                                                                                     '[Optional,
                                                                                                                                                                       Strict,
                                                                                                                                                                       Description
                                                                                                                                                                         "Optional user id"]
                                                                                                                                                                     "user_id"
                                                                                                                                                                     UserId
                                                                                                                                                                   :> Get
                                                                                                                                                                        '[JSON]
                                                                                                                                                                        AllTeamFeatures))))))))))))))))))
                                                                    :<|> (IFederationAPI
                                                                          :<|> (IConversationAPI
                                                                                :<|> IEJPDAPI)))))))))))))
         :<|> (("federation"
                :> (Named
                      "on-conversation-created"
                      ("on-conversation-created"
                       :> (OriginDomainHeader
                           :> (ReqBody '[JSON] (ConversationCreated ConvId)
                               :> Post '[JSON] EmptyResponse)))
                    :<|> (Named
                            "get-conversations@v1"
                            (Until 'V2
                             :> ("get-conversations"
                                 :> (OriginDomainHeader
                                     :> (ReqBody '[JSON] GetConversationsRequest
                                         :> Post '[JSON] GetConversationsResponse))))
                          :<|> (Named
                                  "get-conversations"
                                  (From 'V2
                                   :> ("get-conversations"
                                       :> (OriginDomainHeader
                                           :> (ReqBody '[JSON] GetConversationsRequest
                                               :> Post '[JSON] GetConversationsResponseV2))))
                                :<|> (Named
                                        "leave-conversation"
                                        (MakesFederatedCall 'Galley "on-conversation-updated"
                                         :> (MakesFederatedCall 'Galley "on-mls-message-sent"
                                             :> (MakesFederatedCall 'Brig "get-users-by-ids"
                                                 :> (MakesFederatedCall 'Brig "api-version"
                                                     :> ("leave-conversation"
                                                         :> (OriginDomainHeader
                                                             :> (ReqBody
                                                                   '[JSON] LeaveConversationRequest
                                                                 :> Post
                                                                      '[JSON]
                                                                      LeaveConversationResponse)))))))
                                      :<|> (Named
                                              "send-message"
                                              (MakesFederatedCall 'Galley "on-message-sent"
                                               :> (MakesFederatedCall 'Brig "get-user-clients"
                                                   :> ("send-message"
                                                       :> (OriginDomainHeader
                                                           :> (ReqBody
                                                                 '[JSON] ProteusMessageSendRequest
                                                               :> Post
                                                                    '[JSON] MessageSendResponse)))))
                                            :<|> (Named
                                                    "update-conversation"
                                                    (MakesFederatedCall
                                                       'Galley "on-conversation-updated"
                                                     :> (MakesFederatedCall
                                                           'Galley "on-mls-message-sent"
                                                         :> (MakesFederatedCall
                                                               'Brig "get-users-by-ids"
                                                             :> (MakesFederatedCall
                                                                   'Galley "on-mls-message-sent"
                                                                 :> ("update-conversation"
                                                                     :> (OriginDomainHeader
                                                                         :> (ReqBody
                                                                               '[JSON]
                                                                               ConversationUpdateRequest
                                                                             :> Post
                                                                                  '[JSON]
                                                                                  ConversationUpdateResponse)))))))
                                                  :<|> (Named
                                                          "mls-welcome"
                                                          ("mls-welcome"
                                                           :> (OriginDomainHeader
                                                               :> (ReqBody '[JSON] MLSWelcomeRequest
                                                                   :> Post
                                                                        '[JSON]
                                                                        MLSWelcomeResponse)))
                                                        :<|> (Named
                                                                "send-mls-message"
                                                                (MakesFederatedCall
                                                                   'Galley "on-conversation-updated"
                                                                 :> (MakesFederatedCall
                                                                       'Galley "on-mls-message-sent"
                                                                     :> (MakesFederatedCall
                                                                           'Galley
                                                                           "send-mls-message"
                                                                         :> (MakesFederatedCall
                                                                               'Brig
                                                                               "get-mls-clients"
                                                                             :> ("send-mls-message"
                                                                                 :> (OriginDomainHeader
                                                                                     :> (ReqBody
                                                                                           '[JSON]
                                                                                           MLSMessageSendRequest
                                                                                         :> Post
                                                                                              '[JSON]
                                                                                              MLSMessageResponse)))))))
                                                              :<|> (Named
                                                                      "send-mls-commit-bundle"
                                                                      (MakesFederatedCall
                                                                         'Galley "mls-welcome"
                                                                       :> (MakesFederatedCall
                                                                             'Galley
                                                                             "on-conversation-updated"
                                                                           :> (MakesFederatedCall
                                                                                 'Galley
                                                                                 "on-mls-message-sent"
                                                                               :> (MakesFederatedCall
                                                                                     'Galley
                                                                                     "send-mls-commit-bundle"
                                                                                   :> (MakesFederatedCall
                                                                                         'Brig
                                                                                         "get-mls-clients"
                                                                                       :> (MakesFederatedCall
                                                                                             'Brig
                                                                                             "get-users-by-ids"
                                                                                           :> (MakesFederatedCall
                                                                                                 'Brig
                                                                                                 "api-version"
                                                                                               :> ("send-mls-commit-bundle"
                                                                                                   :> (OriginDomainHeader
                                                                                                       :> (ReqBody
                                                                                                             '[JSON]
                                                                                                             MLSMessageSendRequest
                                                                                                           :> Post
                                                                                                                '[JSON]
                                                                                                                MLSMessageResponse))))))))))
                                                                    :<|> (Named
                                                                            "query-group-info"
                                                                            ("query-group-info"
                                                                             :> (OriginDomainHeader
                                                                                 :> (ReqBody
                                                                                       '[JSON]
                                                                                       GetGroupInfoRequest
                                                                                     :> Post
                                                                                          '[JSON]
                                                                                          GetGroupInfoResponse)))
                                                                          :<|> (Named
                                                                                  "update-typing-indicator"
                                                                                  (MakesFederatedCall
                                                                                     'Galley
                                                                                     "on-typing-indicator-updated"
                                                                                   :> ("update-typing-indicator"
                                                                                       :> (OriginDomainHeader
                                                                                           :> (ReqBody
                                                                                                 '[JSON]
                                                                                                 TypingDataUpdateRequest
                                                                                               :> Post
                                                                                                    '[JSON]
                                                                                                    TypingDataUpdateResponse))))
                                                                                :<|> (Named
                                                                                        "on-typing-indicator-updated"
                                                                                        ("on-typing-indicator-updated"
                                                                                         :> (OriginDomainHeader
                                                                                             :> (ReqBody
                                                                                                   '[JSON]
                                                                                                   TypingDataUpdated
                                                                                                 :> Post
                                                                                                      '[JSON]
                                                                                                      EmptyResponse)))
                                                                                      :<|> (Named
                                                                                              "get-sub-conversation"
                                                                                              (From
                                                                                                 'V1
                                                                                               :> ("get-sub-conversation"
                                                                                                   :> (OriginDomainHeader
                                                                                                       :> (ReqBody
                                                                                                             '[JSON]
                                                                                                             GetSubConversationsRequest
                                                                                                           :> Post
                                                                                                                '[JSON]
                                                                                                                GetSubConversationsResponse))))
                                                                                            :<|> (Named
                                                                                                    "delete-sub-conversation"
                                                                                                    (From
                                                                                                       'V1
                                                                                                     :> ("delete-sub-conversation"
                                                                                                         :> (OriginDomainHeader
                                                                                                             :> (ReqBody
                                                                                                                   '[JSON]
                                                                                                                   DeleteSubConversationFedRequest
                                                                                                                 :> Post
                                                                                                                      '[JSON]
                                                                                                                      DeleteSubConversationResponse))))
                                                                                                  :<|> (Named
                                                                                                          "leave-sub-conversation"
                                                                                                          (MakesFederatedCall
                                                                                                             'Galley
                                                                                                             "on-mls-message-sent"
                                                                                                           :> (From
                                                                                                                 'V1
                                                                                                               :> ("leave-sub-conversation"
                                                                                                                   :> (OriginDomainHeader
                                                                                                                       :> (ReqBody
                                                                                                                             '[JSON]
                                                                                                                             LeaveSubConversationRequest
                                                                                                                           :> Post
                                                                                                                                '[JSON]
                                                                                                                                LeaveSubConversationResponse)))))
                                                                                                        :<|> (Named
                                                                                                                "get-one2one-conversation@v1"
                                                                                                                (From
                                                                                                                   'V1
                                                                                                                 :> (Until
                                                                                                                       'V2
                                                                                                                     :> ("get-one2one-conversation"
                                                                                                                         :> (OriginDomainHeader
                                                                                                                             :> (ReqBody
                                                                                                                                   '[JSON]
                                                                                                                                   GetOne2OneConversationRequest
                                                                                                                                 :> Post
                                                                                                                                      '[JSON]
                                                                                                                                      GetOne2OneConversationResponse)))))
                                                                                                              :<|> (Named
                                                                                                                      "get-one2one-conversation"
                                                                                                                      (From
                                                                                                                         'V2
                                                                                                                       :> ("get-one2one-conversation"
                                                                                                                           :> (OriginDomainHeader
                                                                                                                               :> (ReqBody
                                                                                                                                     '[JSON]
                                                                                                                                     GetOne2OneConversationRequest
                                                                                                                                   :> Post
                                                                                                                                        '[JSON]
                                                                                                                                        GetOne2OneConversationResponseV2))))
                                                                                                                    :<|> (Named
                                                                                                                            "on-client-removed"
                                                                                                                            ("on-client-removed"
                                                                                                                             :> (OriginDomainHeader
                                                                                                                                 :> (ReqBody
                                                                                                                                       '[JSON]
                                                                                                                                       ClientRemovedRequest
                                                                                                                                     :> Post
                                                                                                                                          '[JSON]
                                                                                                                                          EmptyResponse)))
                                                                                                                          :<|> (Named
                                                                                                                                  "on-message-sent"
                                                                                                                                  ("on-message-sent"
                                                                                                                                   :> (OriginDomainHeader
                                                                                                                                       :> (ReqBody
                                                                                                                                             '[JSON]
                                                                                                                                             (RemoteMessage
                                                                                                                                                ConvId)
                                                                                                                                           :> Post
                                                                                                                                                '[JSON]
                                                                                                                                                EmptyResponse)))
                                                                                                                                :<|> (Named
                                                                                                                                        "on-mls-message-sent"
                                                                                                                                        ("on-mls-message-sent"
                                                                                                                                         :> (OriginDomainHeader
                                                                                                                                             :> (ReqBody
                                                                                                                                                   '[JSON]
                                                                                                                                                   RemoteMLSMessage
                                                                                                                                                 :> Post
                                                                                                                                                      '[JSON]
                                                                                                                                                      EmptyResponse)))
                                                                                                                                      :<|> (Named
                                                                                                                                              (Versioned
                                                                                                                                                 'V0
                                                                                                                                                 "on-conversation-updated")
                                                                                                                                              (Until
                                                                                                                                                 'V1
                                                                                                                                               :> ("on-conversation-updated"
                                                                                                                                                   :> (OriginDomainHeader
                                                                                                                                                       :> (ReqBody
                                                                                                                                                             '[JSON]
                                                                                                                                                             ConversationUpdateV0
                                                                                                                                                           :> Post
                                                                                                                                                                '[JSON]
                                                                                                                                                                EmptyResponse))))
                                                                                                                                            :<|> (Named
                                                                                                                                                    "on-conversation-updated"
                                                                                                                                                    (From
                                                                                                                                                       'V1
                                                                                                                                                     :> ("on-conversation-updated"
                                                                                                                                                         :> (OriginDomainHeader
                                                                                                                                                             :> (ReqBody
                                                                                                                                                                   '[JSON]
                                                                                                                                                                   ConversationUpdate
                                                                                                                                                                 :> Post
                                                                                                                                                                      '[JSON]
                                                                                                                                                                      EmptyResponse))))
                                                                                                                                                  :<|> Named
                                                                                                                                                         "on-user-deleted-conversations"
                                                                                                                                                         ("on-user-deleted-conversations"
                                                                                                                                                          :> (OriginDomainHeader
                                                                                                                                                              :> (ReqBody
                                                                                                                                                                    '[JSON]
                                                                                                                                                                    UserDeletedConversationsNotification
                                                                                                                                                                  :> Post
                                                                                                                                                                       '[JSON]
                                                                                                                                                                       EmptyResponse))))))))))))))))))))))))))
               :<|> Raw)))
-> Middleware
forall {k} (proxy :: k -> *) (api :: k).
RoutesToPaths api =>
proxy api -> Middleware
servantPrometheusMiddleware (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @CombinedAPI)
            Middleware -> Middleware -> Middleware
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Middleware
otelMiddleware
            Middleware -> Middleware -> Middleware
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Middleware
GZip.gunzip
            Middleware -> Middleware -> Middleware
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GzipSettings -> Middleware
GZip.gzip GzipSettings
forall a. Default a => a
GZip.def
            Middleware -> Middleware -> Middleware
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Logger -> HeaderName -> Middleware
catchErrors Logger
logger HeaderName
defaultRequestIdHeaderName
    (forall b. (() -> IO b) -> IO b) -> Codensity IO ()
forall k (m :: k -> *) a.
(forall (b :: k). (a -> m b) -> m b) -> Codensity m a
Codensity \() -> IO b
k ->
      () -> IO b
k () IO b -> IO () -> IO b
forall a b. IO a -> IO b -> IO a
`finally` do
        Logger -> (Msg -> Msg) -> IO ()
forall (m :: * -> *). MonadIO m => Logger -> (Msg -> Msg) -> m ()
Log.info Logger
logger ((Msg -> Msg) -> IO ()) -> (Msg -> Msg) -> IO ()
forall a b. (a -> b) -> a -> b
$ forall a. ToBytes a => a -> Msg -> Msg
Log.msg @Text Text
"Galley application finished."
        Logger -> IO ()
forall (m :: * -> *). MonadIO m => Logger -> m ()
Log.flush Logger
logger
        Logger -> IO ()
forall (m :: * -> *). MonadIO m => Logger -> m ()
Log.close Logger
logger
    (Application, Env) -> Codensity IO (Application, Env)
forall a. a -> Codensity IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Middleware
middlewares Middleware -> Middleware
forall a b. (a -> b) -> a -> b
$ Env -> Application
servantApp Env
env, Env
env)
  where
    -- Used as a last case in the servant tree. Previously, there used to be a
    -- wai-routing application in that position. That was causing any `Fail`
    -- route results in any servant endpoint to be recovered and ultimately
    -- report a 404 since no other matching path would normally be found in
    -- the wai-routing application. Now there is no wai-routing application
    -- anymore, so without this fallback, any `Fail` result would commit to the
    -- failed endpoint and return the error for that specific path, which would
    -- break compatibility with older API versions.
    --
    -- Note that, since we have many overlapping paths (e.g.
    -- `/conversations/:uuid` and `/conversations/list`), even without the
    -- fallback, errors would not entirely be consistent. For example, a `Fail`
    -- result when attempting to call `/conversations/list`, say if the content
    -- type is incorrect, would cause `conversations/:uuid` to be matched and
    -- report a 400 `invalid UUID` error.
    fallback :: Application
    fallback :: Application
fallback Request
_ Response -> IO ResponseReceived
k =
      Response -> IO ResponseReceived
k (Response -> IO ResponseReceived)
-> Response -> IO ResponseReceived
forall a b. (a -> b) -> a -> b
$
        Status -> ResponseHeaders -> LByteString -> Response
responseLBS Status
HTTP.status404 [(HeaderName
"Content-Type", ByteString
"application/json")] (LByteString -> Response) -> LByteString -> Response
forall a b. (a -> b) -> a -> b
$
          Error -> LByteString
forall a. ToJSON a => a -> LByteString
Aeson.encode (Error -> LByteString) -> Error -> LByteString
forall a b. (a -> b) -> a -> b
$
            Status -> LText -> LText -> Error
mkError Status
HTTP.status404 LText
"no-endpoint" LText
"The requested endpoint does not exist"

    servantApp :: Env -> Application
    servantApp :: Env -> Application
servantApp Env
e0 Request
r Response -> IO ResponseReceived
cont = do
      let rid :: RequestId
rid = HeaderName -> Request -> RequestId
getRequestId HeaderName
defaultRequestIdHeaderName Request
r
          e :: Env
e = (RequestId -> Identity RequestId) -> Env -> Identity Env
Lens' Env RequestId
reqId ((RequestId -> Identity RequestId) -> Env -> Identity Env)
-> RequestId -> Env -> Env
forall s t a b. ASetter s t a b -> b -> s -> t
.~ RequestId
rid (Env -> Env) -> Env -> Env
forall a b. (a -> b) -> a -> b
$ Env
e0
      Proxy
  (((Named
       "get-unqualified-conversation"
       (Summary "Get a conversation by ID"
        :> (Until 'V3
            :> (CanThrow 'ConvNotFound
                :> (CanThrow 'ConvAccessDenied
                    :> (ZLocalUser
                        :> ("conversations"
                            :> (Capture "cnv" ConvId
                                :> MultiVerb
                                     'GET
                                     '[JSON]
                                     '[VersionedRespond 'V2 200 "Conversation" Conversation]
                                     Conversation)))))))
     :<|> (Named
             "get-unqualified-conversation-legalhold-alias"
             (Summary "Get a conversation by ID (Legalhold alias)"
              :> (Until 'V2
                  :> (CanThrow 'ConvNotFound
                      :> (CanThrow 'ConvAccessDenied
                          :> (ZLocalUser
                              :> ("legalhold"
                                  :> ("conversations"
                                      :> (Capture "cnv" ConvId
                                          :> MultiVerb
                                               'GET
                                               '[JSON]
                                               '[VersionedRespond
                                                   'V2 200 "Conversation" Conversation]
                                               Conversation))))))))
           :<|> (Named
                   "get-conversation@v2"
                   (Summary "Get a conversation by ID"
                    :> (Until 'V3
                        :> (MakesFederatedCall 'Galley "get-conversations"
                            :> (CanThrow 'ConvNotFound
                                :> (CanThrow 'ConvAccessDenied
                                    :> (ZLocalUser
                                        :> ("conversations"
                                            :> (QualifiedCapture "cnv" ConvId
                                                :> MultiVerb
                                                     'GET
                                                     '[JSON]
                                                     '[VersionedRespond
                                                         'V2 200 "Conversation" Conversation]
                                                     Conversation))))))))
                 :<|> (Named
                         "get-conversation@v5"
                         (Summary "Get a conversation by ID"
                          :> (From 'V3
                              :> (Until 'V6
                                  :> (MakesFederatedCall 'Galley "get-conversations"
                                      :> (CanThrow 'ConvNotFound
                                          :> (CanThrow 'ConvAccessDenied
                                              :> (ZLocalUser
                                                  :> ("conversations"
                                                      :> (QualifiedCapture "cnv" ConvId
                                                          :> MultiVerb
                                                               'GET
                                                               '[JSON]
                                                               '[VersionedRespond
                                                                   'V5
                                                                   200
                                                                   "Conversation"
                                                                   Conversation]
                                                               Conversation)))))))))
                       :<|> (Named
                               "get-conversation"
                               (Summary "Get a conversation by ID"
                                :> (From 'V6
                                    :> (MakesFederatedCall 'Galley "get-conversations"
                                        :> (CanThrow 'ConvNotFound
                                            :> (CanThrow 'ConvAccessDenied
                                                :> (ZLocalUser
                                                    :> ("conversations"
                                                        :> (QualifiedCapture "cnv" ConvId
                                                            :> Get '[JSON] Conversation))))))))
                             :<|> (Named
                                     "get-conversation-roles"
                                     (Summary
                                        "Get existing roles available for the given conversation"
                                      :> (CanThrow 'ConvNotFound
                                          :> (CanThrow 'ConvAccessDenied
                                              :> (ZLocalUser
                                                  :> ("conversations"
                                                      :> (Capture "cnv" ConvId
                                                          :> ("roles"
                                                              :> Get
                                                                   '[JSON]
                                                                   ConversationRolesList)))))))
                                   :<|> (Named
                                           "get-group-info"
                                           (Summary "Get MLS group information"
                                            :> (From 'V5
                                                :> (MakesFederatedCall 'Galley "query-group-info"
                                                    :> (CanThrow 'ConvNotFound
                                                        :> (CanThrow 'MLSMissingGroupInfo
                                                            :> (CanThrow 'MLSNotEnabled
                                                                :> (ZLocalUser
                                                                    :> ("conversations"
                                                                        :> (QualifiedCapture
                                                                              "cnv" ConvId
                                                                            :> ("groupinfo"
                                                                                :> MultiVerb
                                                                                     'GET
                                                                                     '[MLS]
                                                                                     '[Respond
                                                                                         200
                                                                                         "The group information"
                                                                                         GroupInfoData]
                                                                                     GroupInfoData))))))))))
                                         :<|> (Named
                                                 "list-conversation-ids-unqualified"
                                                 (Summary
                                                    "[deprecated] Get all local conversation IDs."
                                                  :> (Until 'V3
                                                      :> (ZLocalUser
                                                          :> ("conversations"
                                                              :> ("ids"
                                                                  :> (QueryParam'
                                                                        '[Optional, Strict,
                                                                          Description
                                                                            "Conversation ID to start from (exclusive)"]
                                                                        "start"
                                                                        ConvId
                                                                      :> (QueryParam'
                                                                            '[Optional, Strict,
                                                                              Description
                                                                                "Maximum number of IDs to return"]
                                                                            "size"
                                                                            (Range 1 1000 Int32)
                                                                          :> Get
                                                                               '[JSON]
                                                                               (ConversationList
                                                                                  ConvId))))))))
                                               :<|> (Named
                                                       "list-conversation-ids-v2"
                                                       (Summary "Get all conversation IDs."
                                                        :> (Until 'V3
                                                            :> (Description PaginationDocs
                                                                :> (ZLocalUser
                                                                    :> ("conversations"
                                                                        :> ("list-ids"
                                                                            :> (ReqBody
                                                                                  '[JSON]
                                                                                  GetPaginatedConversationIds
                                                                                :> Post
                                                                                     '[JSON]
                                                                                     ConvIdsPage)))))))
                                                     :<|> (Named
                                                             "list-conversation-ids"
                                                             (Summary "Get all conversation IDs."
                                                              :> (From 'V3
                                                                  :> (Description PaginationDocs
                                                                      :> (ZLocalUser
                                                                          :> ("conversations"
                                                                              :> ("list-ids"
                                                                                  :> (ReqBody
                                                                                        '[JSON]
                                                                                        GetPaginatedConversationIds
                                                                                      :> Post
                                                                                           '[JSON]
                                                                                           ConvIdsPage)))))))
                                                           :<|> (Named
                                                                   "get-conversations"
                                                                   (Summary
                                                                      "Get all *local* conversations."
                                                                    :> (Until 'V3
                                                                        :> (Description
                                                                              "Will not return remote conversations.\n\nUse `POST /conversations/list-ids` followed by `POST /conversations/list` instead."
                                                                            :> (ZLocalUser
                                                                                :> ("conversations"
                                                                                    :> (QueryParam'
                                                                                          '[Optional,
                                                                                            Strict,
                                                                                            Description
                                                                                              "Mutually exclusive with 'start' (at most 32 IDs per request)"]
                                                                                          "ids"
                                                                                          (Range
                                                                                             1
                                                                                             32
                                                                                             (CommaSeparatedList
                                                                                                ConvId))
                                                                                        :> (QueryParam'
                                                                                              '[Optional,
                                                                                                Strict,
                                                                                                Description
                                                                                                  "Conversation ID to start from (exclusive)"]
                                                                                              "start"
                                                                                              ConvId
                                                                                            :> (QueryParam'
                                                                                                  '[Optional,
                                                                                                    Strict,
                                                                                                    Description
                                                                                                      "Maximum number of conversations to return"]
                                                                                                  "size"
                                                                                                  (Range
                                                                                                     1
                                                                                                     500
                                                                                                     Int32)
                                                                                                :> MultiVerb
                                                                                                     'GET
                                                                                                     '[JSON]
                                                                                                     '[VersionedRespond
                                                                                                         'V2
                                                                                                         200
                                                                                                         "List of local conversations"
                                                                                                         (ConversationList
                                                                                                            Conversation)]
                                                                                                     (ConversationList
                                                                                                        Conversation)))))))))
                                                                 :<|> (Named
                                                                         "list-conversations@v1"
                                                                         (Summary
                                                                            "Get conversation metadata for a list of conversation ids"
                                                                          :> (MakesFederatedCall
                                                                                'Galley
                                                                                "get-conversations"
                                                                              :> (Until 'V2
                                                                                  :> (ZLocalUser
                                                                                      :> ("conversations"
                                                                                          :> ("list"
                                                                                              :> ("v2"
                                                                                                  :> (ReqBody
                                                                                                        '[JSON]
                                                                                                        ListConversations
                                                                                                      :> Post
                                                                                                           '[JSON]
                                                                                                           ConversationsResponse))))))))
                                                                       :<|> (Named
                                                                               "list-conversations@v2"
                                                                               (Summary
                                                                                  "Get conversation metadata for a list of conversation ids"
                                                                                :> (MakesFederatedCall
                                                                                      'Galley
                                                                                      "get-conversations"
                                                                                    :> (From 'V2
                                                                                        :> (Until
                                                                                              'V3
                                                                                            :> (ZLocalUser
                                                                                                :> ("conversations"
                                                                                                    :> ("list"
                                                                                                        :> (ReqBody
                                                                                                              '[JSON]
                                                                                                              ListConversations
                                                                                                            :> MultiVerb
                                                                                                                 'POST
                                                                                                                 '[JSON]
                                                                                                                 '[VersionedRespond
                                                                                                                     'V2
                                                                                                                     200
                                                                                                                     "Conversation page"
                                                                                                                     ConversationsResponse]
                                                                                                                 ConversationsResponse))))))))
                                                                             :<|> (Named
                                                                                     "list-conversations@v5"
                                                                                     (Summary
                                                                                        "Get conversation metadata for a list of conversation ids"
                                                                                      :> (MakesFederatedCall
                                                                                            'Galley
                                                                                            "get-conversations"
                                                                                          :> (From
                                                                                                'V3
                                                                                              :> (Until
                                                                                                    'V6
                                                                                                  :> (ZLocalUser
                                                                                                      :> ("conversations"
                                                                                                          :> ("list"
                                                                                                              :> (ReqBody
                                                                                                                    '[JSON]
                                                                                                                    ListConversations
                                                                                                                  :> MultiVerb
                                                                                                                       'POST
                                                                                                                       '[JSON]
                                                                                                                       '[VersionedRespond
                                                                                                                           'V5
                                                                                                                           200
                                                                                                                           "Conversation page"
                                                                                                                           ConversationsResponse]
                                                                                                                       ConversationsResponse))))))))
                                                                                   :<|> (Named
                                                                                           "list-conversations"
                                                                                           (Summary
                                                                                              "Get conversation metadata for a list of conversation ids"
                                                                                            :> (MakesFederatedCall
                                                                                                  'Galley
                                                                                                  "get-conversations"
                                                                                                :> (From
                                                                                                      'V6
                                                                                                    :> (ZLocalUser
                                                                                                        :> ("conversations"
                                                                                                            :> ("list"
                                                                                                                :> (ReqBody
                                                                                                                      '[JSON]
                                                                                                                      ListConversations
                                                                                                                    :> Post
                                                                                                                         '[JSON]
                                                                                                                         ConversationsResponse)))))))
                                                                                         :<|> (Named
                                                                                                 "get-conversation-by-reusable-code"
                                                                                                 (Summary
                                                                                                    "Get limited conversation information by key/code pair"
                                                                                                  :> (CanThrow
                                                                                                        'CodeNotFound
                                                                                                      :> (CanThrow
                                                                                                            'InvalidConversationPassword
                                                                                                          :> (CanThrow
                                                                                                                'ConvNotFound
                                                                                                              :> (CanThrow
                                                                                                                    'ConvAccessDenied
                                                                                                                  :> (CanThrow
                                                                                                                        'GuestLinksDisabled
                                                                                                                      :> (CanThrow
                                                                                                                            'NotATeamMember
                                                                                                                          :> (ZLocalUser
                                                                                                                              :> ("conversations"
                                                                                                                                  :> ("join"
                                                                                                                                      :> (QueryParam'
                                                                                                                                            '[Required,
                                                                                                                                              Strict]
                                                                                                                                            "key"
                                                                                                                                            Key
                                                                                                                                          :> (QueryParam'
                                                                                                                                                '[Required,
                                                                                                                                                  Strict]
                                                                                                                                                "code"
                                                                                                                                                Value
                                                                                                                                              :> Get
                                                                                                                                                   '[JSON]
                                                                                                                                                   ConversationCoverView))))))))))))
                                                                                               :<|> (Named
                                                                                                       "create-group-conversation@v2"
                                                                                                       (Summary
                                                                                                          "Create a new conversation"
                                                                                                        :> (DescriptionOAuthScope
                                                                                                              'WriteConversations
                                                                                                            :> (MakesFederatedCall
                                                                                                                  'Brig
                                                                                                                  "api-version"
                                                                                                                :> (MakesFederatedCall
                                                                                                                      'Galley
                                                                                                                      "on-conversation-created"
                                                                                                                    :> (MakesFederatedCall
                                                                                                                          'Galley
                                                                                                                          "on-conversation-updated"
                                                                                                                        :> (Until
                                                                                                                              'V3
                                                                                                                            :> (CanThrow
                                                                                                                                  'ConvAccessDenied
                                                                                                                                :> (CanThrow
                                                                                                                                      'MLSNonEmptyMemberList
                                                                                                                                    :> (CanThrow
                                                                                                                                          'MLSNotEnabled
                                                                                                                                        :> (CanThrow
                                                                                                                                              'NotConnected
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'NotATeamMember
                                                                                                                                                :> (CanThrow
                                                                                                                                                      OperationDenied
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'MissingLegalholdConsent
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              UnreachableBackendsLegacy
                                                                                                                                                            :> (Description
                                                                                                                                                                  "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                    :> (ZOptConn
                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                            :> (VersionedReqBody
                                                                                                                                                                                  'V2
                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                  NewConv
                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                     'POST
                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                     '[WithHeaders
                                                                                                                                                                                         ConversationHeaders
                                                                                                                                                                                         Conversation
                                                                                                                                                                                         (VersionedRespond
                                                                                                                                                                                            'V2
                                                                                                                                                                                            200
                                                                                                                                                                                            "Conversation existed"
                                                                                                                                                                                            Conversation),
                                                                                                                                                                                       WithHeaders
                                                                                                                                                                                         ConversationHeaders
                                                                                                                                                                                         Conversation
                                                                                                                                                                                         (VersionedRespond
                                                                                                                                                                                            'V2
                                                                                                                                                                                            201
                                                                                                                                                                                            "Conversation created"
                                                                                                                                                                                            Conversation)]
                                                                                                                                                                                     (ResponseForExistedCreated
                                                                                                                                                                                        Conversation))))))))))))))))))))
                                                                                                     :<|> (Named
                                                                                                             "create-group-conversation@v3"
                                                                                                             (Summary
                                                                                                                "Create a new conversation"
                                                                                                              :> (DescriptionOAuthScope
                                                                                                                    'WriteConversations
                                                                                                                  :> (MakesFederatedCall
                                                                                                                        'Brig
                                                                                                                        "api-version"
                                                                                                                      :> (MakesFederatedCall
                                                                                                                            'Galley
                                                                                                                            "on-conversation-created"
                                                                                                                          :> (MakesFederatedCall
                                                                                                                                'Galley
                                                                                                                                "on-conversation-updated"
                                                                                                                              :> (From
                                                                                                                                    'V3
                                                                                                                                  :> (Until
                                                                                                                                        'V4
                                                                                                                                      :> (CanThrow
                                                                                                                                            'ConvAccessDenied
                                                                                                                                          :> (CanThrow
                                                                                                                                                'MLSNonEmptyMemberList
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'MLSNotEnabled
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'NotConnected
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'NotATeamMember
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                OperationDenied
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'MissingLegalholdConsent
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        UnreachableBackendsLegacy
                                                                                                                                                                      :> (Description
                                                                                                                                                                            "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                              :> (ZOptConn
                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                            NewConv
                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                               'POST
                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                               '[WithHeaders
                                                                                                                                                                                                   ConversationHeaders
                                                                                                                                                                                                   Conversation
                                                                                                                                                                                                   (VersionedRespond
                                                                                                                                                                                                      'V3
                                                                                                                                                                                                      200
                                                                                                                                                                                                      "Conversation existed"
                                                                                                                                                                                                      Conversation),
                                                                                                                                                                                                 WithHeaders
                                                                                                                                                                                                   ConversationHeaders
                                                                                                                                                                                                   Conversation
                                                                                                                                                                                                   (VersionedRespond
                                                                                                                                                                                                      'V3
                                                                                                                                                                                                      201
                                                                                                                                                                                                      "Conversation created"
                                                                                                                                                                                                      Conversation)]
                                                                                                                                                                                               (ResponseForExistedCreated
                                                                                                                                                                                                  Conversation)))))))))))))))))))))
                                                                                                           :<|> (Named
                                                                                                                   "create-group-conversation@v5"
                                                                                                                   (Summary
                                                                                                                      "Create a new conversation"
                                                                                                                    :> (MakesFederatedCall
                                                                                                                          'Brig
                                                                                                                          "api-version"
                                                                                                                        :> (MakesFederatedCall
                                                                                                                              'Brig
                                                                                                                              "get-not-fully-connected-backends"
                                                                                                                            :> (MakesFederatedCall
                                                                                                                                  'Galley
                                                                                                                                  "on-conversation-created"
                                                                                                                                :> (MakesFederatedCall
                                                                                                                                      'Galley
                                                                                                                                      "on-conversation-updated"
                                                                                                                                    :> (From
                                                                                                                                          'V4
                                                                                                                                        :> (Until
                                                                                                                                              'V6
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'MLSNonEmptyMemberList
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'MLSNotEnabled
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'NotConnected
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      OperationDenied
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          'MissingLegalholdConsent
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              NonFederatingBackends
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  UnreachableBackends
                                                                                                                                                                                :> (Description
                                                                                                                                                                                      "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                        :> (ZOptConn
                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                      NewConv
                                                                                                                                                                                                    :> MultiVerb
                                                                                                                                                                                                         'POST
                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                         '[WithHeaders
                                                                                                                                                                                                             ConversationHeaders
                                                                                                                                                                                                             Conversation
                                                                                                                                                                                                             (VersionedRespond
                                                                                                                                                                                                                'V5
                                                                                                                                                                                                                200
                                                                                                                                                                                                                "Conversation existed"
                                                                                                                                                                                                                Conversation),
                                                                                                                                                                                                           WithHeaders
                                                                                                                                                                                                             ConversationHeaders
                                                                                                                                                                                                             CreateGroupConversation
                                                                                                                                                                                                             (VersionedRespond
                                                                                                                                                                                                                'V5
                                                                                                                                                                                                                201
                                                                                                                                                                                                                "Conversation created"
                                                                                                                                                                                                                CreateGroupConversation)]
                                                                                                                                                                                                         CreateGroupConversationResponse)))))))))))))))))))))
                                                                                                                 :<|> (Named
                                                                                                                         "create-group-conversation"
                                                                                                                         (Summary
                                                                                                                            "Create a new conversation"
                                                                                                                          :> (MakesFederatedCall
                                                                                                                                'Brig
                                                                                                                                "api-version"
                                                                                                                              :> (MakesFederatedCall
                                                                                                                                    'Brig
                                                                                                                                    "get-not-fully-connected-backends"
                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                        'Galley
                                                                                                                                        "on-conversation-created"
                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                            'Galley
                                                                                                                                            "on-conversation-updated"
                                                                                                                                          :> (From
                                                                                                                                                'V6
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'ConvAccessDenied
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'MLSNonEmptyMemberList
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'MLSNotEnabled
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'NotConnected
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        OperationDenied
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'MissingLegalholdConsent
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                NonFederatingBackends
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    UnreachableBackends
                                                                                                                                                                                  :> (Description
                                                                                                                                                                                        "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                          :> (ZOptConn
                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                        NewConv
                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                           'POST
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           '[WithHeaders
                                                                                                                                                                                                               ConversationHeaders
                                                                                                                                                                                                               Conversation
                                                                                                                                                                                                               (VersionedRespond
                                                                                                                                                                                                                  'V6
                                                                                                                                                                                                                  200
                                                                                                                                                                                                                  "Conversation existed"
                                                                                                                                                                                                                  Conversation),
                                                                                                                                                                                                             WithHeaders
                                                                                                                                                                                                               ConversationHeaders
                                                                                                                                                                                                               CreateGroupConversation
                                                                                                                                                                                                               (VersionedRespond
                                                                                                                                                                                                                  'V6
                                                                                                                                                                                                                  201
                                                                                                                                                                                                                  "Conversation created"
                                                                                                                                                                                                                  CreateGroupConversation)]
                                                                                                                                                                                                           CreateGroupConversationResponse))))))))))))))))))))
                                                                                                                       :<|> (Named
                                                                                                                               "create-self-conversation@v2"
                                                                                                                               (Summary
                                                                                                                                  "Create a self-conversation"
                                                                                                                                :> (Until
                                                                                                                                      'V3
                                                                                                                                    :> (ZLocalUser
                                                                                                                                        :> ("conversations"
                                                                                                                                            :> ("self"
                                                                                                                                                :> MultiVerb
                                                                                                                                                     'POST
                                                                                                                                                     '[JSON]
                                                                                                                                                     '[WithHeaders
                                                                                                                                                         ConversationHeaders
                                                                                                                                                         Conversation
                                                                                                                                                         (VersionedRespond
                                                                                                                                                            'V2
                                                                                                                                                            200
                                                                                                                                                            "Conversation existed"
                                                                                                                                                            Conversation),
                                                                                                                                                       WithHeaders
                                                                                                                                                         ConversationHeaders
                                                                                                                                                         Conversation
                                                                                                                                                         (VersionedRespond
                                                                                                                                                            'V2
                                                                                                                                                            201
                                                                                                                                                            "Conversation created"
                                                                                                                                                            Conversation)]
                                                                                                                                                     (ResponseForExistedCreated
                                                                                                                                                        Conversation))))))
                                                                                                                             :<|> (Named
                                                                                                                                     "create-self-conversation@v5"
                                                                                                                                     (Summary
                                                                                                                                        "Create a self-conversation"
                                                                                                                                      :> (From
                                                                                                                                            'V3
                                                                                                                                          :> (Until
                                                                                                                                                'V6
                                                                                                                                              :> (ZLocalUser
                                                                                                                                                  :> ("conversations"
                                                                                                                                                      :> ("self"
                                                                                                                                                          :> MultiVerb
                                                                                                                                                               'POST
                                                                                                                                                               '[JSON]
                                                                                                                                                               '[WithHeaders
                                                                                                                                                                   ConversationHeaders
                                                                                                                                                                   Conversation
                                                                                                                                                                   (VersionedRespond
                                                                                                                                                                      'V5
                                                                                                                                                                      200
                                                                                                                                                                      "Conversation existed"
                                                                                                                                                                      Conversation),
                                                                                                                                                                 WithHeaders
                                                                                                                                                                   ConversationHeaders
                                                                                                                                                                   Conversation
                                                                                                                                                                   (VersionedRespond
                                                                                                                                                                      'V5
                                                                                                                                                                      201
                                                                                                                                                                      "Conversation created"
                                                                                                                                                                      Conversation)]
                                                                                                                                                               (ResponseForExistedCreated
                                                                                                                                                                  Conversation)))))))
                                                                                                                                   :<|> (Named
                                                                                                                                           "create-self-conversation"
                                                                                                                                           (Summary
                                                                                                                                              "Create a self-conversation"
                                                                                                                                            :> (From
                                                                                                                                                  'V6
                                                                                                                                                :> (ZLocalUser
                                                                                                                                                    :> ("conversations"
                                                                                                                                                        :> ("self"
                                                                                                                                                            :> MultiVerb
                                                                                                                                                                 'POST
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 '[WithHeaders
                                                                                                                                                                     ConversationHeaders
                                                                                                                                                                     Conversation
                                                                                                                                                                     (VersionedRespond
                                                                                                                                                                        'V6
                                                                                                                                                                        200
                                                                                                                                                                        "Conversation existed"
                                                                                                                                                                        Conversation),
                                                                                                                                                                   WithHeaders
                                                                                                                                                                     ConversationHeaders
                                                                                                                                                                     Conversation
                                                                                                                                                                     (VersionedRespond
                                                                                                                                                                        'V6
                                                                                                                                                                        201
                                                                                                                                                                        "Conversation created"
                                                                                                                                                                        Conversation)]
                                                                                                                                                                 (ResponseForExistedCreated
                                                                                                                                                                    Conversation))))))
                                                                                                                                         :<|> (Named
                                                                                                                                                 "get-mls-self-conversation@v5"
                                                                                                                                                 (Summary
                                                                                                                                                    "Get the user's MLS self-conversation"
                                                                                                                                                  :> (From
                                                                                                                                                        'V5
                                                                                                                                                      :> (Until
                                                                                                                                                            'V6
                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                              :> ("conversations"
                                                                                                                                                                  :> ("mls-self"
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'MLSNotEnabled
                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                               'GET
                                                                                                                                                                               '[JSON]
                                                                                                                                                                               '[VersionedRespond
                                                                                                                                                                                   'V5
                                                                                                                                                                                   200
                                                                                                                                                                                   "The MLS self-conversation"
                                                                                                                                                                                   Conversation]
                                                                                                                                                                               Conversation)))))))
                                                                                                                                               :<|> (Named
                                                                                                                                                       "get-mls-self-conversation"
                                                                                                                                                       (Summary
                                                                                                                                                          "Get the user's MLS self-conversation"
                                                                                                                                                        :> (From
                                                                                                                                                              'V6
                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                :> ("conversations"
                                                                                                                                                                    :> ("mls-self"
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'MLSNotEnabled
                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                 'GET
                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                 '[Respond
                                                                                                                                                                                     200
                                                                                                                                                                                     "The MLS self-conversation"
                                                                                                                                                                                     Conversation]
                                                                                                                                                                                 Conversation))))))
                                                                                                                                                     :<|> (Named
                                                                                                                                                             "get-subconversation"
                                                                                                                                                             (Summary
                                                                                                                                                                "Get information about an MLS subconversation"
                                                                                                                                                              :> (From
                                                                                                                                                                    'V5
                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                        'Galley
                                                                                                                                                                        "get-sub-conversation"
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    'MLSSubConvUnsupportedConvType
                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                          :> (QualifiedCapture
                                                                                                                                                                                                "cnv"
                                                                                                                                                                                                ConvId
                                                                                                                                                                                              :> ("subconversations"
                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                        "subconv"
                                                                                                                                                                                                        SubConvId
                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                           'GET
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           '[Respond
                                                                                                                                                                                                               200
                                                                                                                                                                                                               "Subconversation"
                                                                                                                                                                                                               PublicSubConversation]
                                                                                                                                                                                                           PublicSubConversation)))))))))))
                                                                                                                                                           :<|> (Named
                                                                                                                                                                   "leave-subconversation"
                                                                                                                                                                   (Summary
                                                                                                                                                                      "Leave an MLS subconversation"
                                                                                                                                                                    :> (From
                                                                                                                                                                          'V5
                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                              'Galley
                                                                                                                                                                              "on-mls-message-sent"
                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                  'Galley
                                                                                                                                                                                  "leave-sub-conversation"
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'MLSProtocolErrorTag
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'MLSStaleMessage
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'MLSNotEnabled
                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                        :> (ZClient
                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                :> (QualifiedCapture
                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                    :> ("subconversations"
                                                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                                                              "subconv"
                                                                                                                                                                                                                              SubConvId
                                                                                                                                                                                                                            :> ("self"
                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                     'DELETE
                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                     '[RespondEmpty
                                                                                                                                                                                                                                         200
                                                                                                                                                                                                                                         "OK"]
                                                                                                                                                                                                                                     ()))))))))))))))))
                                                                                                                                                                 :<|> (Named
                                                                                                                                                                         "delete-subconversation"
                                                                                                                                                                         (Summary
                                                                                                                                                                            "Delete an MLS subconversation"
                                                                                                                                                                          :> (From
                                                                                                                                                                                'V5
                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                    'Galley
                                                                                                                                                                                    "delete-sub-conversation"
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'ConvAccessDenied
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'MLSNotEnabled
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'MLSStaleMessage
                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                                          :> (QualifiedCapture
                                                                                                                                                                                                                "cnv"
                                                                                                                                                                                                                ConvId
                                                                                                                                                                                                              :> ("subconversations"
                                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                                        "subconv"
                                                                                                                                                                                                                        SubConvId
                                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                            DeleteSubConversationRequest
                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                               'DELETE
                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                               '[Respond
                                                                                                                                                                                                                                   200
                                                                                                                                                                                                                                   "Deletion successful"
                                                                                                                                                                                                                                   ()]
                                                                                                                                                                                                                               ())))))))))))))
                                                                                                                                                                       :<|> (Named
                                                                                                                                                                               "get-subconversation-group-info"
                                                                                                                                                                               (Summary
                                                                                                                                                                                  "Get MLS group information of subconversation"
                                                                                                                                                                                :> (From
                                                                                                                                                                                      'V5
                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                          'Galley
                                                                                                                                                                                          "query-group-info"
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'MLSMissingGroupInfo
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'MLSNotEnabled
                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                            :> (QualifiedCapture
                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                :> ("subconversations"
                                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                                          "subconv"
                                                                                                                                                                                                                          SubConvId
                                                                                                                                                                                                                        :> ("groupinfo"
                                                                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                                                                 'GET
                                                                                                                                                                                                                                 '[MLS]
                                                                                                                                                                                                                                 '[Respond
                                                                                                                                                                                                                                     200
                                                                                                                                                                                                                                     "The group information"
                                                                                                                                                                                                                                     GroupInfoData]
                                                                                                                                                                                                                                 GroupInfoData))))))))))))
                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                     "create-one-to-one-conversation@v2"
                                                                                                                                                                                     (Summary
                                                                                                                                                                                        "Create a 1:1 conversation"
                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                            'Brig
                                                                                                                                                                                            "api-version"
                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                'Galley
                                                                                                                                                                                                "on-conversation-created"
                                                                                                                                                                                              :> (Until
                                                                                                                                                                                                    'V3
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'ConvAccessDenied
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            'InvalidOperation
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                'NoBindingTeamMembers
                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                    'NonBindingTeam
                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            'NotConnected
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        'MissingLegalholdConsent
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            UnreachableBackendsLegacy
                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                      :> ("one2one"
                                                                                                                                                                                                                                                          :> (VersionedReqBody
                                                                                                                                                                                                                                                                'V2
                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                NewConv
                                                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                                                   'POST
                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                   '[WithHeaders
                                                                                                                                                                                                                                                                       ConversationHeaders
                                                                                                                                                                                                                                                                       Conversation
                                                                                                                                                                                                                                                                       (VersionedRespond
                                                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                                                          200
                                                                                                                                                                                                                                                                          "Conversation existed"
                                                                                                                                                                                                                                                                          Conversation),
                                                                                                                                                                                                                                                                     WithHeaders
                                                                                                                                                                                                                                                                       ConversationHeaders
                                                                                                                                                                                                                                                                       Conversation
                                                                                                                                                                                                                                                                       (VersionedRespond
                                                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                                                          201
                                                                                                                                                                                                                                                                          "Conversation created"
                                                                                                                                                                                                                                                                          Conversation)]
                                                                                                                                                                                                                                                                   (ResponseForExistedCreated
                                                                                                                                                                                                                                                                      Conversation))))))))))))))))))))
                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                           "create-one-to-one-conversation"
                                                                                                                                                                                           (Summary
                                                                                                                                                                                              "Create a 1:1 conversation"
                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                  "on-conversation-created"
                                                                                                                                                                                                :> (From
                                                                                                                                                                                                      'V3
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                  'NoBindingTeamMembers
                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                      'NonBindingTeam
                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              'NotConnected
                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                          'MissingLegalholdConsent
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              UnreachableBackendsLegacy
                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                        :> ("one2one"
                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                  NewConv
                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                     '[WithHeaders
                                                                                                                                                                                                                                                                         ConversationHeaders
                                                                                                                                                                                                                                                                         Conversation
                                                                                                                                                                                                                                                                         (VersionedRespond
                                                                                                                                                                                                                                                                            'V3
                                                                                                                                                                                                                                                                            200
                                                                                                                                                                                                                                                                            "Conversation existed"
                                                                                                                                                                                                                                                                            Conversation),
                                                                                                                                                                                                                                                                       WithHeaders
                                                                                                                                                                                                                                                                         ConversationHeaders
                                                                                                                                                                                                                                                                         Conversation
                                                                                                                                                                                                                                                                         (VersionedRespond
                                                                                                                                                                                                                                                                            'V3
                                                                                                                                                                                                                                                                            201
                                                                                                                                                                                                                                                                            "Conversation created"
                                                                                                                                                                                                                                                                            Conversation)]
                                                                                                                                                                                                                                                                     (ResponseForExistedCreated
                                                                                                                                                                                                                                                                        Conversation)))))))))))))))))))
                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                 "get-one-to-one-mls-conversation@v5"
                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                    "Get an MLS 1:1 conversation"
                                                                                                                                                                                                  :> (From
                                                                                                                                                                                                        'V5
                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                            'V6
                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                    'MLSNotEnabled
                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                        'NotConnected
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            'MLSFederatedOne2OneNotSupported
                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                              :> ("one2one"
                                                                                                                                                                                                                                  :> (QualifiedCapture
                                                                                                                                                                                                                                        "usr"
                                                                                                                                                                                                                                        UserId
                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                           'GET
                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                           '[VersionedRespond
                                                                                                                                                                                                                                               'V5
                                                                                                                                                                                                                                               200
                                                                                                                                                                                                                                               "MLS 1-1 conversation"
                                                                                                                                                                                                                                               Conversation]
                                                                                                                                                                                                                                           Conversation))))))))))
                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                       "get-one-to-one-mls-conversation@v6"
                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                          "Get an MLS 1:1 conversation"
                                                                                                                                                                                                        :> (From
                                                                                                                                                                                                              'V6
                                                                                                                                                                                                            :> (Until
                                                                                                                                                                                                                  'V7
                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                          'MLSNotEnabled
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              'NotConnected
                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                :> ("one2one"
                                                                                                                                                                                                                                    :> (QualifiedCapture
                                                                                                                                                                                                                                          "usr"
                                                                                                                                                                                                                                          UserId
                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                             'GET
                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                             '[Respond
                                                                                                                                                                                                                                                 200
                                                                                                                                                                                                                                                 "MLS 1-1 conversation"
                                                                                                                                                                                                                                                 (MLSOne2OneConversation
                                                                                                                                                                                                                                                    MLSPublicKey)]
                                                                                                                                                                                                                                             (MLSOne2OneConversation
                                                                                                                                                                                                                                                MLSPublicKey))))))))))
                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                             "get-one-to-one-mls-conversation"
                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                "Get an MLS 1:1 conversation"
                                                                                                                                                                                                              :> (From
                                                                                                                                                                                                                    'V7
                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            'MLSNotEnabled
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                'NotConnected
                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                  :> ("one2one"
                                                                                                                                                                                                                                      :> (QualifiedCapture
                                                                                                                                                                                                                                            "usr"
                                                                                                                                                                                                                                            UserId
                                                                                                                                                                                                                                          :> (QueryParam
                                                                                                                                                                                                                                                "format"
                                                                                                                                                                                                                                                MLSPublicKeyFormat
                                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                                   'GET
                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                   '[Respond
                                                                                                                                                                                                                                                       200
                                                                                                                                                                                                                                                       "MLS 1-1 conversation"
                                                                                                                                                                                                                                                       (MLSOne2OneConversation
                                                                                                                                                                                                                                                          SomeKey)]
                                                                                                                                                                                                                                                   (MLSOne2OneConversation
                                                                                                                                                                                                                                                      SomeKey))))))))))
                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                   "add-members-to-conversation-unqualified"
                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                      "Add members to an existing conversation (deprecated)"
                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                          "on-conversation-updated"
                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                              "on-mls-message-sent"
                                                                                                                                                                                                                            :> (Until
                                                                                                                                                                                                                                  'V2
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      ('ActionDenied
                                                                                                                                                                                                                                         'AddConversationMember)
                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                             'LeaveConversation)
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                  'InvalidOperation
                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                      'TooManyMembers
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'NotConnected
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'MissingLegalholdConsent
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          NonFederatingBackends
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              UnreachableBackends
                                                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                                                                                                                              "cnv"
                                                                                                                                                                                                                                                                                              ConvId
                                                                                                                                                                                                                                                                                            :> ("members"
                                                                                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                      Invite
                                                                                                                                                                                                                                                                                                    :> MultiVerb
                                                                                                                                                                                                                                                                                                         'POST
                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                         ConvUpdateResponses
                                                                                                                                                                                                                                                                                                         (UpdateResult
                                                                                                                                                                                                                                                                                                            Event))))))))))))))))))))))
                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                         "add-members-to-conversation-unqualified2"
                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                            "Add qualified members to an existing conversation."
                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                "on-conversation-updated"
                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                    "on-mls-message-sent"
                                                                                                                                                                                                                                  :> (Until
                                                                                                                                                                                                                                        'V2
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                               'AddConversationMember)
                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                ('ActionDenied
                                                                                                                                                                                                                                                   'LeaveConversation)
                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                        'InvalidOperation
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'TooManyMembers
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        'NotConnected
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'MissingLegalholdConsent
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                NonFederatingBackends
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    UnreachableBackends
                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                  :> ("members"
                                                                                                                                                                                                                                                                                                      :> ("v2"
                                                                                                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                                                InviteQualified
                                                                                                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                                                                                                   'POST
                                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                                   ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                   (UpdateResult
                                                                                                                                                                                                                                                                                                                      Event)))))))))))))))))))))))
                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                               "add-members-to-conversation"
                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                  "Add qualified members to an existing conversation."
                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                      "on-conversation-updated"
                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                          "on-mls-message-sent"
                                                                                                                                                                                                                                        :> (From
                                                                                                                                                                                                                                              'V2
                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                  ('ActionDenied
                                                                                                                                                                                                                                                     'AddConversationMember)
                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                      ('ActionDenied
                                                                                                                                                                                                                                                         'LeaveConversation)
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'TooManyMembers
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'ConvAccessDenied
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'NotConnected
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'MissingLegalholdConsent
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      NonFederatingBackends
                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                          UnreachableBackends
                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                    :> (QualifiedCapture
                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                        :> ("members"
                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                  InviteQualified
                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                     ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                     (UpdateResult
                                                                                                                                                                                                                                                                                                                        Event))))))))))))))))))))))
                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                     "join-conversation-by-id-unqualified"
                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                        "Join a conversation by its ID (if link access enabled) (deprecated)"
                                                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                                                            'V5
                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                "on-conversation-updated"
                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                    'ConvAccessDenied
                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'InvalidOperation
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'TooManyMembers
                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                  :> ("join"
                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                           'POST
                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                           ConvJoinResponses
                                                                                                                                                                                                                                                                                           (UpdateResult
                                                                                                                                                                                                                                                                                              Event))))))))))))))
                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                           "join-conversation-by-code-unqualified"
                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                              "Join a conversation using a reusable code"
                                                                                                                                                                                                                                            :> (Description
                                                                                                                                                                                                                                                  "If the guest links team feature is disabled, this will fail with 409 GuestLinksDisabled.Note that this is currently inconsistent (for backwards compatibility reasons) with `POST /conversations/code-check` which responds with 404 CodeNotFound if guest links are disabled."
                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                      "on-conversation-updated"
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'CodeNotFound
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'InvalidConversationPassword
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          'GuestLinksDisabled
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      'TooManyMembers
                                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                                        :> (ZConn
                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                :> ("join"
                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                          JoinConversationByCode
                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                             'POST
                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                             ConvJoinResponses
                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                Event)))))))))))))))))
                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                 "code-check"
                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                    "Check validity of a conversation code."
                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                        "If the guest links team feature is disabled, this will fail with 404 CodeNotFound.Note that this is currently inconsistent (for backwards compatibility reasons) with `POST /conversations/join` which responds with 409 GuestLinksDisabled if guest links are disabled."
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'CodeNotFound
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'InvalidConversationPassword
                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                      :> ("code-check"
                                                                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                ConversationCode
                                                                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                                                                   'POST
                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                   '[RespondEmpty
                                                                                                                                                                                                                                                                                       200
                                                                                                                                                                                                                                                                                       "Valid"]
                                                                                                                                                                                                                                                                                   ()))))))))
                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                       "create-conversation-code-unqualified@v3"
                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                          "Create or recreate a conversation code"
                                                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                                                              'V4
                                                                                                                                                                                                                                                            :> (DescriptionOAuthScope
                                                                                                                                                                                                                                                                  'WriteConversationsCode
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'ConvAccessDenied
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'GuestLinksDisabled
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'CreateConversationCodeConflict
                                                                                                                                                                                                                                                                                :> (ZUser
                                                                                                                                                                                                                                                                                    :> (ZHostOpt
                                                                                                                                                                                                                                                                                        :> (ZOptConn
                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                :> (Capture'
                                                                                                                                                                                                                                                                                                      '[Description
                                                                                                                                                                                                                                                                                                          "Conversation ID"]
                                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                                    :> ("code"
                                                                                                                                                                                                                                                                                                        :> CreateConversationCodeVerb)))))))))))))
                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                             "create-conversation-code-unqualified"
                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                "Create or recreate a conversation code"
                                                                                                                                                                                                                                                              :> (From
                                                                                                                                                                                                                                                                    'V4
                                                                                                                                                                                                                                                                  :> (DescriptionOAuthScope
                                                                                                                                                                                                                                                                        'WriteConversationsCode
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'ConvAccessDenied
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    'GuestLinksDisabled
                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                        'CreateConversationCodeConflict
                                                                                                                                                                                                                                                                                      :> (ZUser
                                                                                                                                                                                                                                                                                          :> (ZHostOpt
                                                                                                                                                                                                                                                                                              :> (ZOptConn
                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                      :> (Capture'
                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                          :> ("code"
                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                    CreateConversationCodeRequest
                                                                                                                                                                                                                                                                                                                  :> CreateConversationCodeVerb))))))))))))))
                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                   "get-conversation-guest-links-status"
                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                      "Get the status of the guest links feature for a conversation that potentially has been created by someone from another team."
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                                                                                                            :> (ZUser
                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                    :> (Capture'
                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                                                                                                                            :> ("conversationGuestLinks"
                                                                                                                                                                                                                                                                                                :> Get
                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                                                                                        GuestLinksConfig)))))))))
                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                         "remove-code-unqualified"
                                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                                            "Delete conversation code"
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                  :> ("code"
                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                           'DELETE
                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                           '[Respond
                                                                                                                                                                                                                                                                                                               200
                                                                                                                                                                                                                                                                                                               "Conversation code deleted."
                                                                                                                                                                                                                                                                                                               Event]
                                                                                                                                                                                                                                                                                                           Event))))))))
                                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                                               "get-code"
                                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                                  "Get existing conversation code"
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      'CodeNotFound
                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                  'GuestLinksDisabled
                                                                                                                                                                                                                                                                                                :> (ZHostOpt
                                                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                            :> (Capture'
                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                :> ("code"
                                                                                                                                                                                                                                                                                                                    :> MultiVerb
                                                                                                                                                                                                                                                                                                                         'GET
                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                         '[Respond
                                                                                                                                                                                                                                                                                                                             200
                                                                                                                                                                                                                                                                                                                             "Conversation Code"
                                                                                                                                                                                                                                                                                                                             ConversationCodeInfo]
                                                                                                                                                                                                                                                                                                                         ConversationCodeInfo))))))))))
                                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                                     "member-typing-unqualified"
                                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                                        "Sending typing notifications"
                                                                                                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                                                                                                            'V3
                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                "update-typing-indicator"
                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                    "on-typing-indicator-updated"
                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                                                                                                                          :> (ZConn
                                                                                                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                                                                                                  :> (Capture'
                                                                                                                                                                                                                                                                                                                        '[Description
                                                                                                                                                                                                                                                                                                                            "Conversation ID"]
                                                                                                                                                                                                                                                                                                                        "cnv"
                                                                                                                                                                                                                                                                                                                        ConvId
                                                                                                                                                                                                                                                                                                                      :> ("typing"
                                                                                                                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                                                                TypingStatus
                                                                                                                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                                                                                                                   'POST
                                                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                                                   '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                       200
                                                                                                                                                                                                                                                                                                                                       "Notification sent"]
                                                                                                                                                                                                                                                                                                                                   ())))))))))))
                                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                                           "member-typing-qualified"
                                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                                              "Sending typing notifications"
                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                  "update-typing-indicator"
                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                      "on-typing-indicator-updated"
                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                    :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                        :> ("typing"
                                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                  TypingStatus
                                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                     '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                         200
                                                                                                                                                                                                                                                                                                                                         "Notification sent"]
                                                                                                                                                                                                                                                                                                                                     ()))))))))))
                                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                                 "remove-member-unqualified"
                                                                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                                                                    "Remove a member from a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                        "leave-conversation"
                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                            "on-conversation-updated"
                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                    'Brig
                                                                                                                                                                                                                                                                                                                    "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                  :> (Until
                                                                                                                                                                                                                                                                                                                        'V2
                                                                                                                                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                          :> (ZConn
                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                    ('ActionDenied
                                                                                                                                                                                                                                                                                                                                       'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                            'InvalidOperation
                                                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                  :> ("members"
                                                                                                                                                                                                                                                                                                                                                      :> (Capture'
                                                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                                                "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                            "usr"
                                                                                                                                                                                                                                                                                                                                                            UserId
                                                                                                                                                                                                                                                                                                                                                          :> RemoveFromConversationVerb)))))))))))))))
                                                                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                                                                       "remove-member"
                                                                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                                                                          "Remove a member from a conversation"
                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                              "leave-conversation"
                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                  "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                                      "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                          'Brig
                                                                                                                                                                                                                                                                                                                          "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                      ('ActionDenied
                                                                                                                                                                                                                                                                                                                                         'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                      '[Description
                                                                                                                                                                                                                                                                                                                                                          "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                                                                                    :> ("members"
                                                                                                                                                                                                                                                                                                                                                        :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                              '[Description
                                                                                                                                                                                                                                                                                                                                                                  "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                              "usr"
                                                                                                                                                                                                                                                                                                                                                              UserId
                                                                                                                                                                                                                                                                                                                                                            :> RemoveFromConversationVerb))))))))))))))
                                                                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                                                                             "update-other-member-unqualified"
                                                                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                                                                "Update membership of the specified user (deprecated)"
                                                                                                                                                                                                                                                                                                              :> (Deprecated
                                                                                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                                                                                        "Use `PUT /conversations/:cnv_domain/:cnv/members/:usr_domain/:usr` instead"
                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                            "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                    'Brig
                                                                                                                                                                                                                                                                                                                                    "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                    'ConvMemberNotFound
                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                           'ModifyOtherConversationMember)
                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                            'InvalidTarget
                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                  :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                        '[Description
                                                                                                                                                                                                                                                                                                                                                                            "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                        "cnv"
                                                                                                                                                                                                                                                                                                                                                                        ConvId
                                                                                                                                                                                                                                                                                                                                                                      :> ("members"
                                                                                                                                                                                                                                                                                                                                                                          :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                '[Description
                                                                                                                                                                                                                                                                                                                                                                                    "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                                "usr"
                                                                                                                                                                                                                                                                                                                                                                                UserId
                                                                                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                    OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                       'PUT
                                                                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                       '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                           200
                                                                                                                                                                                                                                                                                                                                                                                           "Membership updated"]
                                                                                                                                                                                                                                                                                                                                                                                       ()))))))))))))))))))
                                                                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                                                                   "update-other-member"
                                                                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                                                                      "Update membership of the specified user"
                                                                                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                                                                                          "**Note**: at least one field has to be provided."
                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                              "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                                  "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                      'Brig
                                                                                                                                                                                                                                                                                                                                      "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                        :> (ZConn
                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                  'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                      'ConvMemberNotFound
                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                             'ModifyOtherConversationMember)
                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                              'InvalidTarget
                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                  'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                    :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                                                                        :> ("members"
                                                                                                                                                                                                                                                                                                                                                                            :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                      "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                                  "usr"
                                                                                                                                                                                                                                                                                                                                                                                  UserId
                                                                                                                                                                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                      OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                    :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                         'PUT
                                                                                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                         '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                             200
                                                                                                                                                                                                                                                                                                                                                                                             "Membership updated"]
                                                                                                                                                                                                                                                                                                                                                                                         ())))))))))))))))))
                                                                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                                                                         "update-conversation-name-deprecated"
                                                                                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                                                                                            "Update conversation name (deprecated)"
                                                                                                                                                                                                                                                                                                                          :> (Deprecated
                                                                                                                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                                                                                                                    "Use `/conversations/:domain/:conv/name` instead."
                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                                                        "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                            "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                'Brig
                                                                                                                                                                                                                                                                                                                                                "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                    ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                       'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                            'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                      :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                ConversationRename
                                                                                                                                                                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                   'PUT
                                                                                                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                   (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                      "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                      "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                      Event)
                                                                                                                                                                                                                                                                                                                                                                                   (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                      Event)))))))))))))))
                                                                                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                                                                                               "update-conversation-name-unqualified"
                                                                                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                                                                                  "Update conversation name (deprecated)"
                                                                                                                                                                                                                                                                                                                                :> (Deprecated
                                                                                                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                                                                                                          "Use `/conversations/:domain/:conv/name` instead."
                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                              "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                                                  "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                      'Brig
                                                                                                                                                                                                                                                                                                                                                      "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                             'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                  'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                            :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                :> ("name"
                                                                                                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                          ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                Event))))))))))))))))
                                                                                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                                                                                     "update-conversation-name"
                                                                                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                                                                                        "Update conversation name"
                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                            "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                    'Brig
                                                                                                                                                                                                                                                                                                                                                    "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                           'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                  :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                          :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                '[Description
                                                                                                                                                                                                                                                                                                                                                                                    "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                "cnv"
                                                                                                                                                                                                                                                                                                                                                                                ConvId
                                                                                                                                                                                                                                                                                                                                                                              :> ("name"
                                                                                                                                                                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                        ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                           'PUT
                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                           (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                              "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                              "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                              Event)
                                                                                                                                                                                                                                                                                                                                                                                           (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                              Event))))))))))))))
                                                                                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                                                                                           "update-conversation-message-timer-unqualified"
                                                                                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                                                                                              "Update the message timer for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                            :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                :> (Description
                                                                                                                                                                                                                                                                                                                                                      "Use `/conversations/:domain/:cnv/message-timer` instead."
                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                                          "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                                              "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                  'Brig
                                                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                 'ModifyConversationMessageTimer)
                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                          'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                            :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                                :> ("message-timer"
                                                                                                                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                          ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                "Message timer unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                "Message timer updated"
                                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                Event)))))))))))))))))
                                                                                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                                                                                 "update-conversation-message-timer"
                                                                                                                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                                                                                                                    "Update the message timer for a conversation"
                                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                                                                        "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                                            "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                'Brig
                                                                                                                                                                                                                                                                                                                                                                "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                  :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                               'ModifyConversationMessageTimer)
                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                        'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                          :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                '[Description
                                                                                                                                                                                                                                                                                                                                                                                                    "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                ConvId
                                                                                                                                                                                                                                                                                                                                                                                              :> ("message-timer"
                                                                                                                                                                                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                        ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                           'PUT
                                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                           (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                              "Message timer unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                              "Message timer updated"
                                                                                                                                                                                                                                                                                                                                                                                                              Event)
                                                                                                                                                                                                                                                                                                                                                                                                           (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                              Event)))))))))))))))
                                                                                                                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                                                                                                                       "update-conversation-receipt-mode-unqualified"
                                                                                                                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                                                                                                                          "Update receipt mode for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                                        :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                            :> (Description
                                                                                                                                                                                                                                                                                                                                                                  "Use `PUT /conversations/:domain/:cnv/receipt-mode` instead."
                                                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                                                                                      "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                                                          "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                                                              "update-conversation"
                                                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                  'Brig
                                                                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                 'ModifyConversationReceiptMode)
                                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                          'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                            :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                :> ("receipt-mode"
                                                                                                                                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                          ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                "Receipt mode unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                "Receipt mode updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                                                                                                                             "update-conversation-receipt-mode"
                                                                                                                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                                                                                                                "Update receipt mode for a conversation"
                                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                                                                                    "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                                                                                        "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                                                            "update-conversation"
                                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                'Brig
                                                                                                                                                                                                                                                                                                                                                                                "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                  :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                               'ModifyConversationReceiptMode)
                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                        'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                          :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                    "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                ConvId
                                                                                                                                                                                                                                                                                                                                                                                                              :> ("receipt-mode"
                                                                                                                                                                                                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                        ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                           'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                           (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                              "Receipt mode unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                              "Receipt mode updated"
                                                                                                                                                                                                                                                                                                                                                                                                                              Event)
                                                                                                                                                                                                                                                                                                                                                                                                                           (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                              Event))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                   "update-conversation-access-unqualified"
                                                                                                                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                                                                                                                      "Update access modes for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                                                          "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                                                              "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                  'Brig
                                                                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                :> (Until
                                                                                                                                                                                                                                                                                                                                                                                      'V3
                                                                                                                                                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                                                                                                                                                          "Use PUT `/conversations/:domain/:cnv/access` instead."
                                                                                                                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                      ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                         'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                             'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                              'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                  'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                      'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                          'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                            :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                    :> (VersionedReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                          ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                Event)))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                         "update-conversation-access@v2"
                                                                                                                                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                                                                                                                                            "Update access modes for a conversation"
                                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                                                                "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                                                                                                    "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                        'Brig
                                                                                                                                                                                                                                                                                                                                                                                        "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                                                                                                                                                                                                            'V3
                                                                                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                           'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                               'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                        'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                            'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                              :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                  :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                      :> (VersionedReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                            ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                               'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                  "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                  "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                               "update-conversation-access"
                                                                                                                                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                                                                                                                                  "Update access modes for a conversation"
                                                                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                                                                                                      "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                                                                          "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                              'Brig
                                                                                                                                                                                                                                                                                                                                                                                              "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                            :> (From
                                                                                                                                                                                                                                                                                                                                                                                                  'V3
                                                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                 'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                  ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                     'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                      'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                  'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                    :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                        :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                  ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                     'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                     (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                        "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                        "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                        Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                                     (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                        Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                     "get-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                                                                                                                                        "Get self membership properties (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                                      :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                  :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                        '[Description
                                                                                                                                                                                                                                                                                                                                                                                                            "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                        "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                        ConvId
                                                                                                                                                                                                                                                                                                                                                                                                      :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                               (Maybe
                                                                                                                                                                                                                                                                                                                                                                                                                  Member)))))))
                                                                                                                                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                           "update-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                                                                                                                                              "Update self membership properties (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                                            :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                                                                :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                      "Use `/conversations/:domain/:conv/self` instead."
                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                    :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                        :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                  MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                     'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                     '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                                                                         200
                                                                                                                                                                                                                                                                                                                                                                                                                                         "Update successful"]
                                                                                                                                                                                                                                                                                                                                                                                                                                     ()))))))))))
                                                                                                                                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                                 "update-conversation-self"
                                                                                                                                                                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                                                                                                                                                                    "Update self membership properties"
                                                                                                                                                                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                        "**Note**: at least one field has to be provided."
                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                          :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                    MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                       'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                       '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                                                                           200
                                                                                                                                                                                                                                                                                                                                                                                                                                           "Update successful"]
                                                                                                                                                                                                                                                                                                                                                                                                                                       ())))))))))
                                                                                                                                                                                                                                                                                                                                                                                               :<|> Named
                                                                                                                                                                                                                                                                                                                                                                                                      "update-conversation-protocol"
                                                                                                                                                                                                                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                                                                                                                                                                                                                         "Update the protocol of the conversation"
                                                                                                                                                                                                                                                                                                                                                                                                       :> (From
                                                                                                                                                                                                                                                                                                                                                                                                             'V5
                                                                                                                                                                                                                                                                                                                                                                                                           :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                                 "**Note**: Only proteus->mixed upgrade is supported."
                                                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                     'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                         'ConvInvalidProtocolTransition
                                                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                             ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                                'LeaveConversation)
                                                                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                 'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                     'MLSMigrationCriteriaNotSatisfied
                                                                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                             OperationDenied
                                                                                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                                               :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                                                                   :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                                                       :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                                           :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                                               :> ("protocol"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ProtocolUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                                                       :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Event))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
    :<|> (TeamConversationAPI
          :<|> ((Named
                   "post-otr-message-unqualified"
                   (Summary
                      "Post an encrypted message to a conversation (accepts JSON or Protobuf)"
                    :> (Description PostOtrDescriptionUnqualified
                        :> (MakesFederatedCall 'Galley "on-message-sent"
                            :> (MakesFederatedCall 'Brig "get-user-clients"
                                :> (ZLocalUser
                                    :> (ZConn
                                        :> ("conversations"
                                            :> (Capture "cnv" ConvId
                                                :> ("otr"
                                                    :> ("messages"
                                                        :> (QueryParam
                                                              "ignore_missing" IgnoreMissing
                                                            :> (QueryParam
                                                                  "report_missing" ReportMissing
                                                                :> (ReqBody
                                                                      '[JSON, Proto] NewOtrMessage
                                                                    :> MultiVerb
                                                                         'POST
                                                                         '[JSON]
                                                                         '[ErrorResponse
                                                                             'ConvNotFound,
                                                                           ErrorResponse
                                                                             'UnknownClient,
                                                                           ErrorResponse
                                                                             'MissingLegalholdConsentOldClients,
                                                                           ErrorResponse
                                                                             'MissingLegalholdConsent,
                                                                           Respond
                                                                             412
                                                                             "Missing clients"
                                                                             ClientMismatch,
                                                                           Respond
                                                                             201
                                                                             "Message sent"
                                                                             ClientMismatch]
                                                                         (PostOtrResponse
                                                                            ClientMismatch))))))))))))))
                 :<|> (Named
                         "post-otr-broadcast-unqualified"
                         (Summary
                            "Broadcast an encrypted message to all team members and all contacts (accepts JSON or Protobuf)"
                          :> (Description PostOtrDescriptionUnqualified
                              :> (ZLocalUser
                                  :> (ZConn
                                      :> (CanThrow 'TeamNotFound
                                          :> (CanThrow 'BroadcastLimitExceeded
                                              :> (CanThrow 'NonBindingTeam
                                                  :> ("broadcast"
                                                      :> ("otr"
                                                          :> ("messages"
                                                              :> (QueryParam
                                                                    "ignore_missing" IgnoreMissing
                                                                  :> (QueryParam
                                                                        "report_missing"
                                                                        ReportMissing
                                                                      :> (ReqBody
                                                                            '[JSON, Proto]
                                                                            NewOtrMessage
                                                                          :> MultiVerb
                                                                               'POST
                                                                               '[JSON]
                                                                               '[ErrorResponse
                                                                                   'ConvNotFound,
                                                                                 ErrorResponse
                                                                                   'UnknownClient,
                                                                                 ErrorResponse
                                                                                   'MissingLegalholdConsentOldClients,
                                                                                 ErrorResponse
                                                                                   'MissingLegalholdConsent,
                                                                                 Respond
                                                                                   412
                                                                                   "Missing clients"
                                                                                   ClientMismatch,
                                                                                 Respond
                                                                                   201
                                                                                   "Message sent"
                                                                                   ClientMismatch]
                                                                               (PostOtrResponse
                                                                                  ClientMismatch))))))))))))))
                       :<|> (Named
                               "post-proteus-message"
                               (Summary
                                  "Post an encrypted message to a conversation (accepts only Protobuf)"
                                :> (Description PostOtrDescription
                                    :> (MakesFederatedCall 'Brig "get-user-clients"
                                        :> (MakesFederatedCall 'Galley "on-message-sent"
                                            :> (MakesFederatedCall 'Galley "send-message"
                                                :> (ZLocalUser
                                                    :> (ZConn
                                                        :> ("conversations"
                                                            :> (QualifiedCapture "cnv" ConvId
                                                                :> ("proteus"
                                                                    :> ("messages"
                                                                        :> (ReqBody
                                                                              '[Proto]
                                                                              (RawProto
                                                                                 QualifiedNewOtrMessage)
                                                                            :> MultiVerb
                                                                                 'POST
                                                                                 '[JSON]
                                                                                 '[ErrorResponse
                                                                                     'ConvNotFound,
                                                                                   ErrorResponse
                                                                                     'UnknownClient,
                                                                                   ErrorResponse
                                                                                     'MissingLegalholdConsentOldClients,
                                                                                   ErrorResponse
                                                                                     'MissingLegalholdConsent,
                                                                                   Respond
                                                                                     412
                                                                                     "Missing clients"
                                                                                     MessageSendingStatus,
                                                                                   Respond
                                                                                     201
                                                                                     "Message sent"
                                                                                     MessageSendingStatus]
                                                                                 (Either
                                                                                    (MessageNotSent
                                                                                       MessageSendingStatus)
                                                                                    MessageSendingStatus)))))))))))))
                             :<|> Named
                                    "post-proteus-broadcast"
                                    (Summary
                                       "Post an encrypted message to all team members and all contacts (accepts only Protobuf)"
                                     :> (Description PostOtrDescription
                                         :> (ZLocalUser
                                             :> (ZConn
                                                 :> (CanThrow 'TeamNotFound
                                                     :> (CanThrow 'BroadcastLimitExceeded
                                                         :> (CanThrow 'NonBindingTeam
                                                             :> ("broadcast"
                                                                 :> ("proteus"
                                                                     :> ("messages"
                                                                         :> (ReqBody
                                                                               '[Proto]
                                                                               QualifiedNewOtrMessage
                                                                             :> MultiVerb
                                                                                  'POST
                                                                                  '[JSON]
                                                                                  '[ErrorResponse
                                                                                      'ConvNotFound,
                                                                                    ErrorResponse
                                                                                      'UnknownClient,
                                                                                    ErrorResponse
                                                                                      'MissingLegalholdConsentOldClients,
                                                                                    ErrorResponse
                                                                                      'MissingLegalholdConsent,
                                                                                    Respond
                                                                                      412
                                                                                      "Missing clients"
                                                                                      MessageSendingStatus,
                                                                                    Respond
                                                                                      201
                                                                                      "Message sent"
                                                                                      MessageSendingStatus]
                                                                                  (Either
                                                                                     (MessageNotSent
                                                                                        MessageSendingStatus)
                                                                                     MessageSendingStatus)))))))))))))))
                :<|> ((Named
                         "post-bot-message-unqualified"
                         (MakesFederatedCall 'Galley "on-message-sent"
                          :> (MakesFederatedCall 'Brig "get-user-clients"
                              :> (ZBot
                                  :> (ZConversation
                                      :> (CanThrow 'ConvNotFound
                                          :> ("bot"
                                              :> ("messages"
                                                  :> (QueryParam "ignore_missing" IgnoreMissing
                                                      :> (QueryParam "report_missing" ReportMissing
                                                          :> (ReqBody '[JSON] NewOtrMessage
                                                              :> MultiVerb
                                                                   'POST
                                                                   '[JSON]
                                                                   '[ErrorResponse 'ConvNotFound,
                                                                     ErrorResponse 'UnknownClient,
                                                                     ErrorResponse
                                                                       'MissingLegalholdConsentOldClients,
                                                                     ErrorResponse
                                                                       'MissingLegalholdConsent,
                                                                     Respond
                                                                       412
                                                                       "Missing clients"
                                                                       ClientMismatch,
                                                                     Respond
                                                                       201
                                                                       "Message sent"
                                                                       ClientMismatch]
                                                                   (PostOtrResponse
                                                                      ClientMismatch)))))))))))
                       :<|> Named
                              "get-bot-conversation"
                              (CanThrow 'AccessDenied
                               :> (CanThrow 'ConvNotFound
                                   :> (CanThrow OperationDenied
                                       :> (CanThrow 'NotATeamMember
                                           :> (CanThrow 'TeamNotFound
                                               :> ("bot"
                                                   :> ("conversation"
                                                       :> (ZBot
                                                           :> (ZConversation
                                                               :> Get '[JSON] BotConvView))))))))))
                      :<|> (TeamAPI
                            :<|> ((Named
                                     '("get", SSOConfig)
                                     (Description ""
                                      :> (ZUser
                                          :> (Summary "Get config for sso"
                                              :> (CanThrow OperationDenied
                                                  :> (CanThrow 'NotATeamMember
                                                      :> (CanThrow 'TeamNotFound
                                                          :> ("teams"
                                                              :> (Capture "tid" TeamId
                                                                  :> ("features"
                                                                      :> ("sso"
                                                                          :> Get
                                                                               '[JSON]
                                                                               (LockableFeature
                                                                                  SSOConfig)))))))))))
                                   :<|> ((Named
                                            '("get", LegalholdConfig)
                                            (Description ""
                                             :> (ZUser
                                                 :> (Summary "Get config for legalhold"
                                                     :> (CanThrow OperationDenied
                                                         :> (CanThrow 'NotATeamMember
                                                             :> (CanThrow 'TeamNotFound
                                                                 :> ("teams"
                                                                     :> (Capture "tid" TeamId
                                                                         :> ("features"
                                                                             :> ("legalhold"
                                                                                 :> Get
                                                                                      '[JSON]
                                                                                      (LockableFeature
                                                                                         LegalholdConfig)))))))))))
                                          :<|> Named
                                                 '("put", LegalholdConfig)
                                                 (Description ""
                                                  :> (ZUser
                                                      :> (Summary "Put config for legalhold"
                                                          :> (CanThrow OperationDenied
                                                              :> (CanThrow 'NotATeamMember
                                                                  :> (CanThrow 'TeamNotFound
                                                                      :> (CanThrow TeamFeatureError
                                                                          :> (CanThrowMany
                                                                                '[ 'ActionDenied
                                                                                     'RemoveConversationMember,
                                                                                   'CannotEnableLegalHoldServiceLargeTeam,
                                                                                   'LegalHoldNotEnabled,
                                                                                   'LegalHoldDisableUnimplemented,
                                                                                   'LegalHoldServiceNotRegistered,
                                                                                   'UserLegalHoldIllegalOperation,
                                                                                   'LegalHoldCouldNotBlockConnections]
                                                                              :> ("teams"
                                                                                  :> (Capture
                                                                                        "tid" TeamId
                                                                                      :> ("features"
                                                                                          :> ("legalhold"
                                                                                              :> (ReqBody
                                                                                                    '[JSON]
                                                                                                    (Feature
                                                                                                       LegalholdConfig)
                                                                                                  :> Put
                                                                                                       '[JSON]
                                                                                                       (LockableFeature
                                                                                                          LegalholdConfig)))))))))))))))
                                         :<|> ((Named
                                                  '("get", SearchVisibilityAvailableConfig)
                                                  (Description ""
                                                   :> (ZUser
                                                       :> (Summary "Get config for searchVisibility"
                                                           :> (CanThrow OperationDenied
                                                               :> (CanThrow 'NotATeamMember
                                                                   :> (CanThrow 'TeamNotFound
                                                                       :> ("teams"
                                                                           :> (Capture "tid" TeamId
                                                                               :> ("features"
                                                                                   :> ("searchVisibility"
                                                                                       :> Get
                                                                                            '[JSON]
                                                                                            (LockableFeature
                                                                                               SearchVisibilityAvailableConfig)))))))))))
                                                :<|> Named
                                                       '("put", SearchVisibilityAvailableConfig)
                                                       (Description ""
                                                        :> (ZUser
                                                            :> (Summary
                                                                  "Put config for searchVisibility"
                                                                :> (CanThrow OperationDenied
                                                                    :> (CanThrow 'NotATeamMember
                                                                        :> (CanThrow 'TeamNotFound
                                                                            :> (CanThrow
                                                                                  TeamFeatureError
                                                                                :> (CanThrowMany '[]
                                                                                    :> ("teams"
                                                                                        :> (Capture
                                                                                              "tid"
                                                                                              TeamId
                                                                                            :> ("features"
                                                                                                :> ("searchVisibility"
                                                                                                    :> (ReqBody
                                                                                                          '[JSON]
                                                                                                          (Feature
                                                                                                             SearchVisibilityAvailableConfig)
                                                                                                        :> Put
                                                                                                             '[JSON]
                                                                                                             (LockableFeature
                                                                                                                SearchVisibilityAvailableConfig)))))))))))))))
                                               :<|> (SearchVisibilityGet
                                                     :<|> (SearchVisibilitySet
                                                           :<|> (Named
                                                                   '("get",
                                                                     ValidateSAMLEmailsConfig)
                                                                   (Description ""
                                                                    :> (ZUser
                                                                        :> (Summary
                                                                              "Get config for validateSAMLemails"
                                                                            :> (CanThrow
                                                                                  OperationDenied
                                                                                :> (CanThrow
                                                                                      'NotATeamMember
                                                                                    :> (CanThrow
                                                                                          'TeamNotFound
                                                                                        :> ("teams"
                                                                                            :> (Capture
                                                                                                  "tid"
                                                                                                  TeamId
                                                                                                :> ("features"
                                                                                                    :> ("validateSAMLemails"
                                                                                                        :> Get
                                                                                                             '[JSON]
                                                                                                             (LockableFeature
                                                                                                                ValidateSAMLEmailsConfig)))))))))))
                                                                 :<|> (Named
                                                                         '("get",
                                                                           DigitalSignaturesConfig)
                                                                         (Description ""
                                                                          :> (ZUser
                                                                              :> (Summary
                                                                                    "Get config for digitalSignatures"
                                                                                  :> (CanThrow
                                                                                        OperationDenied
                                                                                      :> (CanThrow
                                                                                            'NotATeamMember
                                                                                          :> (CanThrow
                                                                                                'TeamNotFound
                                                                                              :> ("teams"
                                                                                                  :> (Capture
                                                                                                        "tid"
                                                                                                        TeamId
                                                                                                      :> ("features"
                                                                                                          :> ("digitalSignatures"
                                                                                                              :> Get
                                                                                                                   '[JSON]
                                                                                                                   (LockableFeature
                                                                                                                      DigitalSignaturesConfig)))))))))))
                                                                       :<|> ((Named
                                                                                '("get",
                                                                                  AppLockConfig)
                                                                                (Description ""
                                                                                 :> (ZUser
                                                                                     :> (Summary
                                                                                           "Get config for appLock"
                                                                                         :> (CanThrow
                                                                                               OperationDenied
                                                                                             :> (CanThrow
                                                                                                   'NotATeamMember
                                                                                                 :> (CanThrow
                                                                                                       'TeamNotFound
                                                                                                     :> ("teams"
                                                                                                         :> (Capture
                                                                                                               "tid"
                                                                                                               TeamId
                                                                                                             :> ("features"
                                                                                                                 :> ("appLock"
                                                                                                                     :> Get
                                                                                                                          '[JSON]
                                                                                                                          (LockableFeature
                                                                                                                             AppLockConfig)))))))))))
                                                                              :<|> Named
                                                                                     '("put",
                                                                                       AppLockConfig)
                                                                                     (Description ""
                                                                                      :> (ZUser
                                                                                          :> (Summary
                                                                                                "Put config for appLock"
                                                                                              :> (CanThrow
                                                                                                    OperationDenied
                                                                                                  :> (CanThrow
                                                                                                        'NotATeamMember
                                                                                                      :> (CanThrow
                                                                                                            'TeamNotFound
                                                                                                          :> (CanThrow
                                                                                                                TeamFeatureError
                                                                                                              :> (CanThrowMany
                                                                                                                    '[]
                                                                                                                  :> ("teams"
                                                                                                                      :> (Capture
                                                                                                                            "tid"
                                                                                                                            TeamId
                                                                                                                          :> ("features"
                                                                                                                              :> ("appLock"
                                                                                                                                  :> (ReqBody
                                                                                                                                        '[JSON]
                                                                                                                                        (Feature
                                                                                                                                           AppLockConfig)
                                                                                                                                      :> Put
                                                                                                                                           '[JSON]
                                                                                                                                           (LockableFeature
                                                                                                                                              AppLockConfig)))))))))))))))
                                                                             :<|> ((Named
                                                                                      '("get",
                                                                                        FileSharingConfig)
                                                                                      (Description
                                                                                         ""
                                                                                       :> (ZUser
                                                                                           :> (Summary
                                                                                                 "Get config for fileSharing"
                                                                                               :> (CanThrow
                                                                                                     OperationDenied
                                                                                                   :> (CanThrow
                                                                                                         'NotATeamMember
                                                                                                       :> (CanThrow
                                                                                                             'TeamNotFound
                                                                                                           :> ("teams"
                                                                                                               :> (Capture
                                                                                                                     "tid"
                                                                                                                     TeamId
                                                                                                                   :> ("features"
                                                                                                                       :> ("fileSharing"
                                                                                                                           :> Get
                                                                                                                                '[JSON]
                                                                                                                                (LockableFeature
                                                                                                                                   FileSharingConfig)))))))))))
                                                                                    :<|> Named
                                                                                           '("put",
                                                                                             FileSharingConfig)
                                                                                           (Description
                                                                                              ""
                                                                                            :> (ZUser
                                                                                                :> (Summary
                                                                                                      "Put config for fileSharing"
                                                                                                    :> (CanThrow
                                                                                                          OperationDenied
                                                                                                        :> (CanThrow
                                                                                                              'NotATeamMember
                                                                                                            :> (CanThrow
                                                                                                                  'TeamNotFound
                                                                                                                :> (CanThrow
                                                                                                                      TeamFeatureError
                                                                                                                    :> (CanThrowMany
                                                                                                                          '[]
                                                                                                                        :> ("teams"
                                                                                                                            :> (Capture
                                                                                                                                  "tid"
                                                                                                                                  TeamId
                                                                                                                                :> ("features"
                                                                                                                                    :> ("fileSharing"
                                                                                                                                        :> (ReqBody
                                                                                                                                              '[JSON]
                                                                                                                                              (Feature
                                                                                                                                                 FileSharingConfig)
                                                                                                                                            :> Put
                                                                                                                                                 '[JSON]
                                                                                                                                                 (LockableFeature
                                                                                                                                                    FileSharingConfig)))))))))))))))
                                                                                   :<|> (Named
                                                                                           '("get",
                                                                                             ClassifiedDomainsConfig)
                                                                                           (Description
                                                                                              ""
                                                                                            :> (ZUser
                                                                                                :> (Summary
                                                                                                      "Get config for classifiedDomains"
                                                                                                    :> (CanThrow
                                                                                                          OperationDenied
                                                                                                        :> (CanThrow
                                                                                                              'NotATeamMember
                                                                                                            :> (CanThrow
                                                                                                                  'TeamNotFound
                                                                                                                :> ("teams"
                                                                                                                    :> (Capture
                                                                                                                          "tid"
                                                                                                                          TeamId
                                                                                                                        :> ("features"
                                                                                                                            :> ("classifiedDomains"
                                                                                                                                :> Get
                                                                                                                                     '[JSON]
                                                                                                                                     (LockableFeature
                                                                                                                                        ClassifiedDomainsConfig)))))))))))
                                                                                         :<|> ((Named
                                                                                                  '("get",
                                                                                                    ConferenceCallingConfig)
                                                                                                  (Description
                                                                                                     ""
                                                                                                   :> (ZUser
                                                                                                       :> (Summary
                                                                                                             "Get config for conferenceCalling"
                                                                                                           :> (CanThrow
                                                                                                                 OperationDenied
                                                                                                               :> (CanThrow
                                                                                                                     'NotATeamMember
                                                                                                                   :> (CanThrow
                                                                                                                         'TeamNotFound
                                                                                                                       :> ("teams"
                                                                                                                           :> (Capture
                                                                                                                                 "tid"
                                                                                                                                 TeamId
                                                                                                                               :> ("features"
                                                                                                                                   :> ("conferenceCalling"
                                                                                                                                       :> Get
                                                                                                                                            '[JSON]
                                                                                                                                            (LockableFeature
                                                                                                                                               ConferenceCallingConfig)))))))))))
                                                                                                :<|> Named
                                                                                                       '("put",
                                                                                                         ConferenceCallingConfig)
                                                                                                       (Description
                                                                                                          ""
                                                                                                        :> (ZUser
                                                                                                            :> (Summary
                                                                                                                  "Put config for conferenceCalling"
                                                                                                                :> (CanThrow
                                                                                                                      OperationDenied
                                                                                                                    :> (CanThrow
                                                                                                                          'NotATeamMember
                                                                                                                        :> (CanThrow
                                                                                                                              'TeamNotFound
                                                                                                                            :> (CanThrow
                                                                                                                                  TeamFeatureError
                                                                                                                                :> (CanThrowMany
                                                                                                                                      '[]
                                                                                                                                    :> ("teams"
                                                                                                                                        :> (Capture
                                                                                                                                              "tid"
                                                                                                                                              TeamId
                                                                                                                                            :> ("features"
                                                                                                                                                :> ("conferenceCalling"
                                                                                                                                                    :> (ReqBody
                                                                                                                                                          '[JSON]
                                                                                                                                                          (Feature
                                                                                                                                                             ConferenceCallingConfig)
                                                                                                                                                        :> Put
                                                                                                                                                             '[JSON]
                                                                                                                                                             (LockableFeature
                                                                                                                                                                ConferenceCallingConfig)))))))))))))))
                                                                                               :<|> ((Named
                                                                                                        '("get",
                                                                                                          SelfDeletingMessagesConfig)
                                                                                                        (Description
                                                                                                           ""
                                                                                                         :> (ZUser
                                                                                                             :> (Summary
                                                                                                                   "Get config for selfDeletingMessages"
                                                                                                                 :> (CanThrow
                                                                                                                       OperationDenied
                                                                                                                     :> (CanThrow
                                                                                                                           'NotATeamMember
                                                                                                                         :> (CanThrow
                                                                                                                               'TeamNotFound
                                                                                                                             :> ("teams"
                                                                                                                                 :> (Capture
                                                                                                                                       "tid"
                                                                                                                                       TeamId
                                                                                                                                     :> ("features"
                                                                                                                                         :> ("selfDeletingMessages"
                                                                                                                                             :> Get
                                                                                                                                                  '[JSON]
                                                                                                                                                  (LockableFeature
                                                                                                                                                     SelfDeletingMessagesConfig)))))))))))
                                                                                                      :<|> Named
                                                                                                             '("put",
                                                                                                               SelfDeletingMessagesConfig)
                                                                                                             (Description
                                                                                                                ""
                                                                                                              :> (ZUser
                                                                                                                  :> (Summary
                                                                                                                        "Put config for selfDeletingMessages"
                                                                                                                      :> (CanThrow
                                                                                                                            OperationDenied
                                                                                                                          :> (CanThrow
                                                                                                                                'NotATeamMember
                                                                                                                              :> (CanThrow
                                                                                                                                    'TeamNotFound
                                                                                                                                  :> (CanThrow
                                                                                                                                        TeamFeatureError
                                                                                                                                      :> (CanThrowMany
                                                                                                                                            '[]
                                                                                                                                          :> ("teams"
                                                                                                                                              :> (Capture
                                                                                                                                                    "tid"
                                                                                                                                                    TeamId
                                                                                                                                                  :> ("features"
                                                                                                                                                      :> ("selfDeletingMessages"
                                                                                                                                                          :> (ReqBody
                                                                                                                                                                '[JSON]
                                                                                                                                                                (Feature
                                                                                                                                                                   SelfDeletingMessagesConfig)
                                                                                                                                                              :> Put
                                                                                                                                                                   '[JSON]
                                                                                                                                                                   (LockableFeature
                                                                                                                                                                      SelfDeletingMessagesConfig)))))))))))))))
                                                                                                     :<|> ((Named
                                                                                                              '("get",
                                                                                                                GuestLinksConfig)
                                                                                                              (Description
                                                                                                                 ""
                                                                                                               :> (ZUser
                                                                                                                   :> (Summary
                                                                                                                         "Get config for conversationGuestLinks"
                                                                                                                       :> (CanThrow
                                                                                                                             OperationDenied
                                                                                                                           :> (CanThrow
                                                                                                                                 'NotATeamMember
                                                                                                                               :> (CanThrow
                                                                                                                                     'TeamNotFound
                                                                                                                                   :> ("teams"
                                                                                                                                       :> (Capture
                                                                                                                                             "tid"
                                                                                                                                             TeamId
                                                                                                                                           :> ("features"
                                                                                                                                               :> ("conversationGuestLinks"
                                                                                                                                                   :> Get
                                                                                                                                                        '[JSON]
                                                                                                                                                        (LockableFeature
                                                                                                                                                           GuestLinksConfig)))))))))))
                                                                                                            :<|> Named
                                                                                                                   '("put",
                                                                                                                     GuestLinksConfig)
                                                                                                                   (Description
                                                                                                                      ""
                                                                                                                    :> (ZUser
                                                                                                                        :> (Summary
                                                                                                                              "Put config for conversationGuestLinks"
                                                                                                                            :> (CanThrow
                                                                                                                                  OperationDenied
                                                                                                                                :> (CanThrow
                                                                                                                                      'NotATeamMember
                                                                                                                                    :> (CanThrow
                                                                                                                                          'TeamNotFound
                                                                                                                                        :> (CanThrow
                                                                                                                                              TeamFeatureError
                                                                                                                                            :> (CanThrowMany
                                                                                                                                                  '[]
                                                                                                                                                :> ("teams"
                                                                                                                                                    :> (Capture
                                                                                                                                                          "tid"
                                                                                                                                                          TeamId
                                                                                                                                                        :> ("features"
                                                                                                                                                            :> ("conversationGuestLinks"
                                                                                                                                                                :> (ReqBody
                                                                                                                                                                      '[JSON]
                                                                                                                                                                      (Feature
                                                                                                                                                                         GuestLinksConfig)
                                                                                                                                                                    :> Put
                                                                                                                                                                         '[JSON]
                                                                                                                                                                         (LockableFeature
                                                                                                                                                                            GuestLinksConfig)))))))))))))))
                                                                                                           :<|> ((Named
                                                                                                                    '("get",
                                                                                                                      SndFactorPasswordChallengeConfig)
                                                                                                                    (Description
                                                                                                                       ""
                                                                                                                     :> (ZUser
                                                                                                                         :> (Summary
                                                                                                                               "Get config for sndFactorPasswordChallenge"
                                                                                                                             :> (CanThrow
                                                                                                                                   OperationDenied
                                                                                                                                 :> (CanThrow
                                                                                                                                       'NotATeamMember
                                                                                                                                     :> (CanThrow
                                                                                                                                           'TeamNotFound
                                                                                                                                         :> ("teams"
                                                                                                                                             :> (Capture
                                                                                                                                                   "tid"
                                                                                                                                                   TeamId
                                                                                                                                                 :> ("features"
                                                                                                                                                     :> ("sndFactorPasswordChallenge"
                                                                                                                                                         :> Get
                                                                                                                                                              '[JSON]
                                                                                                                                                              (LockableFeature
                                                                                                                                                                 SndFactorPasswordChallengeConfig)))))))))))
                                                                                                                  :<|> Named
                                                                                                                         '("put",
                                                                                                                           SndFactorPasswordChallengeConfig)
                                                                                                                         (Description
                                                                                                                            ""
                                                                                                                          :> (ZUser
                                                                                                                              :> (Summary
                                                                                                                                    "Put config for sndFactorPasswordChallenge"
                                                                                                                                  :> (CanThrow
                                                                                                                                        OperationDenied
                                                                                                                                      :> (CanThrow
                                                                                                                                            'NotATeamMember
                                                                                                                                          :> (CanThrow
                                                                                                                                                'TeamNotFound
                                                                                                                                              :> (CanThrow
                                                                                                                                                    TeamFeatureError
                                                                                                                                                  :> (CanThrowMany
                                                                                                                                                        '[]
                                                                                                                                                      :> ("teams"
                                                                                                                                                          :> (Capture
                                                                                                                                                                "tid"
                                                                                                                                                                TeamId
                                                                                                                                                              :> ("features"
                                                                                                                                                                  :> ("sndFactorPasswordChallenge"
                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                            '[JSON]
                                                                                                                                                                            (Feature
                                                                                                                                                                               SndFactorPasswordChallengeConfig)
                                                                                                                                                                          :> Put
                                                                                                                                                                               '[JSON]
                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                  SndFactorPasswordChallengeConfig)))))))))))))))
                                                                                                                 :<|> ((Named
                                                                                                                          '("get",
                                                                                                                            MLSConfig)
                                                                                                                          (From
                                                                                                                             'V5
                                                                                                                           :> (Description
                                                                                                                                 ""
                                                                                                                               :> (ZUser
                                                                                                                                   :> (Summary
                                                                                                                                         "Get config for mls"
                                                                                                                                       :> (CanThrow
                                                                                                                                             OperationDenied
                                                                                                                                           :> (CanThrow
                                                                                                                                                 'NotATeamMember
                                                                                                                                               :> (CanThrow
                                                                                                                                                     'TeamNotFound
                                                                                                                                                   :> ("teams"
                                                                                                                                                       :> (Capture
                                                                                                                                                             "tid"
                                                                                                                                                             TeamId
                                                                                                                                                           :> ("features"
                                                                                                                                                               :> ("mls"
                                                                                                                                                                   :> Get
                                                                                                                                                                        '[JSON]
                                                                                                                                                                        (LockableFeature
                                                                                                                                                                           MLSConfig))))))))))))
                                                                                                                        :<|> Named
                                                                                                                               '("put",
                                                                                                                                 MLSConfig)
                                                                                                                               (From
                                                                                                                                  'V5
                                                                                                                                :> (Description
                                                                                                                                      ""
                                                                                                                                    :> (ZUser
                                                                                                                                        :> (Summary
                                                                                                                                              "Put config for mls"
                                                                                                                                            :> (CanThrow
                                                                                                                                                  OperationDenied
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'NotATeamMember
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'TeamNotFound
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              TeamFeatureError
                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                  '[]
                                                                                                                                                                :> ("teams"
                                                                                                                                                                    :> (Capture
                                                                                                                                                                          "tid"
                                                                                                                                                                          TeamId
                                                                                                                                                                        :> ("features"
                                                                                                                                                                            :> ("mls"
                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                      (Feature
                                                                                                                                                                                         MLSConfig)
                                                                                                                                                                                    :> Put
                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                            MLSConfig))))))))))))))))
                                                                                                                       :<|> ((Named
                                                                                                                                '("get",
                                                                                                                                  ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                (Description
                                                                                                                                   ""
                                                                                                                                 :> (ZUser
                                                                                                                                     :> (Summary
                                                                                                                                           "Get config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                         :> (CanThrow
                                                                                                                                               OperationDenied
                                                                                                                                             :> (CanThrow
                                                                                                                                                   'NotATeamMember
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'TeamNotFound
                                                                                                                                                     :> ("teams"
                                                                                                                                                         :> (Capture
                                                                                                                                                               "tid"
                                                                                                                                                               TeamId
                                                                                                                                                             :> ("features"
                                                                                                                                                                 :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                     :> Get
                                                                                                                                                                          '[JSON]
                                                                                                                                                                          (LockableFeature
                                                                                                                                                                             ExposeInvitationURLsToTeamAdminConfig)))))))))))
                                                                                                                              :<|> Named
                                                                                                                                     '("put",
                                                                                                                                       ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                     (Description
                                                                                                                                        ""
                                                                                                                                      :> (ZUser
                                                                                                                                          :> (Summary
                                                                                                                                                "Put config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                              :> (CanThrow
                                                                                                                                                    OperationDenied
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'NotATeamMember
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'TeamNotFound
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                TeamFeatureError
                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                    '[]
                                                                                                                                                                  :> ("teams"
                                                                                                                                                                      :> (Capture
                                                                                                                                                                            "tid"
                                                                                                                                                                            TeamId
                                                                                                                                                                          :> ("features"
                                                                                                                                                                              :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                        (Feature
                                                                                                                                                                                           ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                      :> Put
                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                              ExposeInvitationURLsToTeamAdminConfig)))))))))))))))
                                                                                                                             :<|> ((Named
                                                                                                                                      '("get",
                                                                                                                                        SearchVisibilityInboundConfig)
                                                                                                                                      (Description
                                                                                                                                         ""
                                                                                                                                       :> (ZUser
                                                                                                                                           :> (Summary
                                                                                                                                                 "Get config for searchVisibilityInbound"
                                                                                                                                               :> (CanThrow
                                                                                                                                                     OperationDenied
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'NotATeamMember
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'TeamNotFound
                                                                                                                                                           :> ("teams"
                                                                                                                                                               :> (Capture
                                                                                                                                                                     "tid"
                                                                                                                                                                     TeamId
                                                                                                                                                                   :> ("features"
                                                                                                                                                                       :> ("searchVisibilityInbound"
                                                                                                                                                                           :> Get
                                                                                                                                                                                '[JSON]
                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                   SearchVisibilityInboundConfig)))))))))))
                                                                                                                                    :<|> Named
                                                                                                                                           '("put",
                                                                                                                                             SearchVisibilityInboundConfig)
                                                                                                                                           (Description
                                                                                                                                              ""
                                                                                                                                            :> (ZUser
                                                                                                                                                :> (Summary
                                                                                                                                                      "Put config for searchVisibilityInbound"
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          OperationDenied
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'NotATeamMember
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      TeamFeatureError
                                                                                                                                                                    :> (CanThrowMany
                                                                                                                                                                          '[]
                                                                                                                                                                        :> ("teams"
                                                                                                                                                                            :> (Capture
                                                                                                                                                                                  "tid"
                                                                                                                                                                                  TeamId
                                                                                                                                                                                :> ("features"
                                                                                                                                                                                    :> ("searchVisibilityInbound"
                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                              (Feature
                                                                                                                                                                                                 SearchVisibilityInboundConfig)
                                                                                                                                                                                            :> Put
                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                    SearchVisibilityInboundConfig)))))))))))))))
                                                                                                                                   :<|> ((Named
                                                                                                                                            '("get",
                                                                                                                                              OutlookCalIntegrationConfig)
                                                                                                                                            (Description
                                                                                                                                               ""
                                                                                                                                             :> (ZUser
                                                                                                                                                 :> (Summary
                                                                                                                                                       "Get config for outlookCalIntegration"
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           OperationDenied
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'NotATeamMember
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                 :> ("teams"
                                                                                                                                                                     :> (Capture
                                                                                                                                                                           "tid"
                                                                                                                                                                           TeamId
                                                                                                                                                                         :> ("features"
                                                                                                                                                                             :> ("outlookCalIntegration"
                                                                                                                                                                                 :> Get
                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                         OutlookCalIntegrationConfig)))))))))))
                                                                                                                                          :<|> Named
                                                                                                                                                 '("put",
                                                                                                                                                   OutlookCalIntegrationConfig)
                                                                                                                                                 (Description
                                                                                                                                                    ""
                                                                                                                                                  :> (ZUser
                                                                                                                                                      :> (Summary
                                                                                                                                                            "Put config for outlookCalIntegration"
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                OperationDenied
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            TeamFeatureError
                                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                                '[]
                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                        "tid"
                                                                                                                                                                                        TeamId
                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                          :> ("outlookCalIntegration"
                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                    (Feature
                                                                                                                                                                                                       OutlookCalIntegrationConfig)
                                                                                                                                                                                                  :> Put
                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                          OutlookCalIntegrationConfig)))))))))))))))
                                                                                                                                         :<|> (Named
                                                                                                                                                 '("get",
                                                                                                                                                   MlsE2EIdConfig)
                                                                                                                                                 (From
                                                                                                                                                    'V5
                                                                                                                                                  :> (Description
                                                                                                                                                        ""
                                                                                                                                                      :> (ZUser
                                                                                                                                                          :> (Summary
                                                                                                                                                                "Get config for mlsE2EId"
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    OperationDenied
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                          :> ("teams"
                                                                                                                                                                              :> (Capture
                                                                                                                                                                                    "tid"
                                                                                                                                                                                    TeamId
                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                      :> ("mlsE2EId"
                                                                                                                                                                                          :> Get
                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                  MlsE2EIdConfig))))))))))))
                                                                                                                                               :<|> (Named
                                                                                                                                                       "put-MlsE2EIdConfig@v5"
                                                                                                                                                       (From
                                                                                                                                                          'V5
                                                                                                                                                        :> (Until
                                                                                                                                                              'V6
                                                                                                                                                            :> (ZUser
                                                                                                                                                                :> (Summary
                                                                                                                                                                      "Put config for mlsE2EId"
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          OperationDenied
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      TeamFeatureError
                                                                                                                                                                                    :> (CanThrowMany
                                                                                                                                                                                          '[]
                                                                                                                                                                                        :> ("teams"
                                                                                                                                                                                            :> (Capture
                                                                                                                                                                                                  "tid"
                                                                                                                                                                                                  TeamId
                                                                                                                                                                                                :> ("features"
                                                                                                                                                                                                    :> ("mlsE2EId"
                                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                              (Feature
                                                                                                                                                                                                                 MlsE2EIdConfig)
                                                                                                                                                                                                            :> Put
                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                    MlsE2EIdConfig)))))))))))))))
                                                                                                                                                     :<|> (Named
                                                                                                                                                             '("put",
                                                                                                                                                               MlsE2EIdConfig)
                                                                                                                                                             (From
                                                                                                                                                                'V6
                                                                                                                                                              :> (Description
                                                                                                                                                                    ""
                                                                                                                                                                  :> (ZUser
                                                                                                                                                                      :> (Summary
                                                                                                                                                                            "Put config for mlsE2EId"
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                OperationDenied
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            TeamFeatureError
                                                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                                                '[]
                                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                        "tid"
                                                                                                                                                                                                        TeamId
                                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                                          :> ("mlsE2EId"
                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                    (Feature
                                                                                                                                                                                                                       MlsE2EIdConfig)
                                                                                                                                                                                                                  :> Put
                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                          MlsE2EIdConfig)))))))))))))))
                                                                                                                                                           :<|> ((Named
                                                                                                                                                                    '("get",
                                                                                                                                                                      MlsMigrationConfig)
                                                                                                                                                                    (From
                                                                                                                                                                       'V5
                                                                                                                                                                     :> (Description
                                                                                                                                                                           ""
                                                                                                                                                                         :> (ZUser
                                                                                                                                                                             :> (Summary
                                                                                                                                                                                   "Get config for mlsMigration"
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                       "tid"
                                                                                                                                                                                                       TeamId
                                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                                         :> ("mlsMigration"
                                                                                                                                                                                                             :> Get
                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                     MlsMigrationConfig))))))))))))
                                                                                                                                                                  :<|> Named
                                                                                                                                                                         '("put",
                                                                                                                                                                           MlsMigrationConfig)
                                                                                                                                                                         (From
                                                                                                                                                                            'V5
                                                                                                                                                                          :> (Description
                                                                                                                                                                                ""
                                                                                                                                                                              :> (ZUser
                                                                                                                                                                                  :> (Summary
                                                                                                                                                                                        "Put config for mlsMigration"
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                                                            '[]
                                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                                      :> ("mlsMigration"
                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                (Feature
                                                                                                                                                                                                                                   MlsMigrationConfig)
                                                                                                                                                                                                                              :> Put
                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                      MlsMigrationConfig))))))))))))))))
                                                                                                                                                                 :<|> ((Named
                                                                                                                                                                          '("get",
                                                                                                                                                                            EnforceFileDownloadLocationConfig)
                                                                                                                                                                          (From
                                                                                                                                                                             'V5
                                                                                                                                                                           :> (Description
                                                                                                                                                                                 "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                               :> (ZUser
                                                                                                                                                                                   :> (Summary
                                                                                                                                                                                         "Get config for enforceFileDownloadLocation"
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             OperationDenied
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                                   :> ("teams"
                                                                                                                                                                                                       :> (Capture
                                                                                                                                                                                                             "tid"
                                                                                                                                                                                                             TeamId
                                                                                                                                                                                                           :> ("features"
                                                                                                                                                                                                               :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                   :> Get
                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                                           EnforceFileDownloadLocationConfig))))))))))))
                                                                                                                                                                        :<|> Named
                                                                                                                                                                               '("put",
                                                                                                                                                                                 EnforceFileDownloadLocationConfig)
                                                                                                                                                                               (From
                                                                                                                                                                                  'V5
                                                                                                                                                                                :> (Description
                                                                                                                                                                                      "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                    :> (ZUser
                                                                                                                                                                                        :> (Summary
                                                                                                                                                                                              "Put config for enforceFileDownloadLocation"
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                              TeamFeatureError
                                                                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                                                                  '[]
                                                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                                          "tid"
                                                                                                                                                                                                                          TeamId
                                                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                                                            :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                      (Feature
                                                                                                                                                                                                                                         EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                    :> Put
                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                                            EnforceFileDownloadLocationConfig))))))))))))))))
                                                                                                                                                                       :<|> (Named
                                                                                                                                                                               '("get",
                                                                                                                                                                                 LimitedEventFanoutConfig)
                                                                                                                                                                               (From
                                                                                                                                                                                  'V5
                                                                                                                                                                                :> (Description
                                                                                                                                                                                      ""
                                                                                                                                                                                    :> (ZUser
                                                                                                                                                                                        :> (Summary
                                                                                                                                                                                              "Get config for limitedEventFanout"
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                                        :> ("teams"
                                                                                                                                                                                                            :> (Capture
                                                                                                                                                                                                                  "tid"
                                                                                                                                                                                                                  TeamId
                                                                                                                                                                                                                :> ("features"
                                                                                                                                                                                                                    :> ("limitedEventFanout"
                                                                                                                                                                                                                        :> Get
                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                LimitedEventFanoutConfig))))))))))))
                                                                                                                                                                             :<|> (AllTeamFeaturesUserGet
                                                                                                                                                                                   :<|> (AllTeamFeaturesTeamGet
                                                                                                                                                                                         :<|> ((Named
                                                                                                                                                                                                  '("get-deprecated",
                                                                                                                                                                                                    SearchVisibilityAvailableConfig)
                                                                                                                                                                                                  (ZUser
                                                                                                                                                                                                   :> (Summary
                                                                                                                                                                                                         "[deprecated] Get config for searchVisibility"
                                                                                                                                                                                                       :> (Until
                                                                                                                                                                                                             'V2
                                                                                                                                                                                                           :> (Description
                                                                                                                                                                                                                 "Deprecated. Please use `GET /teams/:tid/features/searchVisibility` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                                                           :> ("teams"
                                                                                                                                                                                                                               :> (Capture
                                                                                                                                                                                                                                     "tid"
                                                                                                                                                                                                                                     TeamId
                                                                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                                                                       :> ("search-visibility"
                                                                                                                                                                                                                                           :> Get
                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                                   SearchVisibilityAvailableConfig))))))))))))
                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                        '("put-deprecated",
                                                                                                                                                                                                          SearchVisibilityAvailableConfig)
                                                                                                                                                                                                        (ZUser
                                                                                                                                                                                                         :> (Summary
                                                                                                                                                                                                               "[deprecated] Get config for searchVisibility"
                                                                                                                                                                                                             :> (Until
                                                                                                                                                                                                                   'V2
                                                                                                                                                                                                                 :> (Description
                                                                                                                                                                                                                       "Deprecated. Please use `PUT /teams/:tid/features/searchVisibility` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                       TeamFeatureError
                                                                                                                                                                                                                                     :> ("teams"
                                                                                                                                                                                                                                         :> (Capture
                                                                                                                                                                                                                                               "tid"
                                                                                                                                                                                                                                               TeamId
                                                                                                                                                                                                                                             :> ("features"
                                                                                                                                                                                                                                                 :> ("search-visibility"
                                                                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                           (Feature
                                                                                                                                                                                                                                                              SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                                                         :> Put
                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                                                 SearchVisibilityAvailableConfig))))))))))))))
                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                              '("get-deprecated",
                                                                                                                                                                                                                ValidateSAMLEmailsConfig)
                                                                                                                                                                                                              (ZUser
                                                                                                                                                                                                               :> (Summary
                                                                                                                                                                                                                     "[deprecated] Get config for validateSAMLemails"
                                                                                                                                                                                                                   :> (Until
                                                                                                                                                                                                                         'V2
                                                                                                                                                                                                                       :> (Description
                                                                                                                                                                                                                             "Deprecated. Please use `GET /teams/:tid/features/validateSAMLemails` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                                                                 TeamId
                                                                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                                                                   :> ("validate-saml-emails"
                                                                                                                                                                                                                                                       :> Get
                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                                                               ValidateSAMLEmailsConfig))))))))))))
                                                                                                                                                                                                            :<|> Named
                                                                                                                                                                                                                   '("get-deprecated",
                                                                                                                                                                                                                     DigitalSignaturesConfig)
                                                                                                                                                                                                                   (ZUser
                                                                                                                                                                                                                    :> (Summary
                                                                                                                                                                                                                          "[deprecated] Get config for digitalSignatures"
                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                              'V2
                                                                                                                                                                                                                            :> (Description
                                                                                                                                                                                                                                  "Deprecated. Please use `GET /teams/:tid/features/digitalSignatures` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                          OperationDenied
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                                                                      "tid"
                                                                                                                                                                                                                                                      TeamId
                                                                                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                                                                                        :> ("digital-signatures"
                                                                                                                                                                                                                                                            :> Get
                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                                                                    DigitalSignaturesConfig)))))))))))))))
                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                       '("get-config",
                                                                                                                                                                                                         LegalholdConfig)
                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                          "[deprecated] Get feature config for feature legalhold"
                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                              'V2
                                                                                                                                                                                                            :> (Description
                                                                                                                                                                                                                  "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                :> (ZUser
                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              OperationDenied
                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                                                                :> ("feature-configs"
                                                                                                                                                                                                                                    :> ("legalhold"
                                                                                                                                                                                                                                        :> Get
                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                                LegalholdConfig))))))))))
                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                             '("get-config",
                                                                                                                                                                                                               SSOConfig)
                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                "[deprecated] Get feature config for feature sso"
                                                                                                                                                                                                              :> (Until
                                                                                                                                                                                                                    'V2
                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                        "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                      :> (ZUser
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                                                      :> ("feature-configs"
                                                                                                                                                                                                                                          :> ("sso"
                                                                                                                                                                                                                                              :> Get
                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                                      SSOConfig))))))))))
                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                   '("get-config",
                                                                                                                                                                                                                     SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                      "[deprecated] Get feature config for feature searchVisibility"
                                                                                                                                                                                                                    :> (Until
                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                        :> (Description
                                                                                                                                                                                                                              "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                            :> (ZUser
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                          OperationDenied
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                                                                            :> ("feature-configs"
                                                                                                                                                                                                                                                :> ("searchVisibility"
                                                                                                                                                                                                                                                    :> Get
                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                                                            SearchVisibilityAvailableConfig))))))))))
                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                         '("get-config",
                                                                                                                                                                                                                           ValidateSAMLEmailsConfig)
                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                            "[deprecated] Get feature config for feature validateSAMLemails"
                                                                                                                                                                                                                          :> (Until
                                                                                                                                                                                                                                'V2
                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                    "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                  :> (ZUser
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                                                                  :> ("feature-configs"
                                                                                                                                                                                                                                                      :> ("validateSAMLemails"
                                                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                                                  ValidateSAMLEmailsConfig))))))))))
                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                               '("get-config",
                                                                                                                                                                                                                                 DigitalSignaturesConfig)
                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                  "[deprecated] Get feature config for feature digitalSignatures"
                                                                                                                                                                                                                                :> (Until
                                                                                                                                                                                                                                      'V2
                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                          "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                        :> (ZUser
                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                                                                                        :> ("feature-configs"
                                                                                                                                                                                                                                                            :> ("digitalSignatures"
                                                                                                                                                                                                                                                                :> Get
                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                                                        DigitalSignaturesConfig))))))))))
                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                     '("get-config",
                                                                                                                                                                                                                                       AppLockConfig)
                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                        "[deprecated] Get feature config for feature appLock"
                                                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                                          :> (Description
                                                                                                                                                                                                                                                "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                              :> (ZUser
                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                                                                                                              :> ("feature-configs"
                                                                                                                                                                                                                                                                  :> ("appLock"
                                                                                                                                                                                                                                                                      :> Get
                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                                                                              AppLockConfig))))))))))
                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                           '("get-config",
                                                                                                                                                                                                                                             FileSharingConfig)
                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                              "[deprecated] Get feature config for feature fileSharing"
                                                                                                                                                                                                                                            :> (Until
                                                                                                                                                                                                                                                  'V2
                                                                                                                                                                                                                                                :> (Description
                                                                                                                                                                                                                                                      "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                    :> (ZUser
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                                                                                    :> ("feature-configs"
                                                                                                                                                                                                                                                                        :> ("fileSharing"
                                                                                                                                                                                                                                                                            :> Get
                                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                                                                                    FileSharingConfig))))))))))
                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                 '("get-config",
                                                                                                                                                                                                                                                   ClassifiedDomainsConfig)
                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                    "[deprecated] Get feature config for feature classifiedDomains"
                                                                                                                                                                                                                                                  :> (Until
                                                                                                                                                                                                                                                        'V2
                                                                                                                                                                                                                                                      :> (Description
                                                                                                                                                                                                                                                            "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                          :> (ZUser
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        OperationDenied
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                                                                                                          :> ("feature-configs"
                                                                                                                                                                                                                                                                              :> ("classifiedDomains"
                                                                                                                                                                                                                                                                                  :> Get
                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                                                                                          ClassifiedDomainsConfig))))))))))
                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                       '("get-config",
                                                                                                                                                                                                                                                         ConferenceCallingConfig)
                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                          "[deprecated] Get feature config for feature conferenceCalling"
                                                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                                                              'V2
                                                                                                                                                                                                                                                            :> (Description
                                                                                                                                                                                                                                                                  "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                :> (ZUser
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              OperationDenied
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                                                                                                                :> ("feature-configs"
                                                                                                                                                                                                                                                                                    :> ("conferenceCalling"
                                                                                                                                                                                                                                                                                        :> Get
                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                                                                                ConferenceCallingConfig))))))))))
                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                             '("get-config",
                                                                                                                                                                                                                                                               SelfDeletingMessagesConfig)
                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                "[deprecated] Get feature config for feature selfDeletingMessages"
                                                                                                                                                                                                                                                              :> (Until
                                                                                                                                                                                                                                                                    'V2
                                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                                        "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                      :> (ZUser
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                                                                                                      :> ("feature-configs"
                                                                                                                                                                                                                                                                                          :> ("selfDeletingMessages"
                                                                                                                                                                                                                                                                                              :> Get
                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                                                                                      SelfDeletingMessagesConfig))))))))))
                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                   '("get-config",
                                                                                                                                                                                                                                                                     GuestLinksConfig)
                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                      "[deprecated] Get feature config for feature conversationGuestLinks"
                                                                                                                                                                                                                                                                    :> (Until
                                                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                                                        :> (Description
                                                                                                                                                                                                                                                                              "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                            :> (ZUser
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                          OperationDenied
                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                                                                                                                            :> ("feature-configs"
                                                                                                                                                                                                                                                                                                :> ("conversationGuestLinks"
                                                                                                                                                                                                                                                                                                    :> Get
                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                                                                                                            GuestLinksConfig))))))))))
                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                         '("get-config",
                                                                                                                                                                                                                                                                           SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                                            "[deprecated] Get feature config for feature sndFactorPasswordChallenge"
                                                                                                                                                                                                                                                                          :> (Until
                                                                                                                                                                                                                                                                                'V2
                                                                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                                                                    "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                                  :> (ZUser
                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                                                                                                                  :> ("feature-configs"
                                                                                                                                                                                                                                                                                                      :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                                                                                                  SndFactorPasswordChallengeConfig))))))))))
                                                                                                                                                                                                                                                                       :<|> Named
                                                                                                                                                                                                                                                                              '("get-config",
                                                                                                                                                                                                                                                                                MLSConfig)
                                                                                                                                                                                                                                                                              (Summary
                                                                                                                                                                                                                                                                                 "[deprecated] Get feature config for feature mls"
                                                                                                                                                                                                                                                                               :> (Until
                                                                                                                                                                                                                                                                                     'V2
                                                                                                                                                                                                                                                                                   :> (Description
                                                                                                                                                                                                                                                                                         "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                                       :> (ZUser
                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                                                                                                                                       :> ("feature-configs"
                                                                                                                                                                                                                                                                                                           :> ("mls"
                                                                                                                                                                                                                                                                                                               :> Get
                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                                                                                                                       MLSConfig)))))))))))))))))))))))))))))))))))))))))))))))))
                                  :<|> ((Named
                                           "mls-message"
                                           ("mls"
                                            :> (Summary "Post an MLS message"
                                                :> (From 'V5
                                                    :> (MakesFederatedCall
                                                          'Galley "on-mls-message-sent"
                                                        :> (MakesFederatedCall
                                                              'Galley "send-mls-message"
                                                            :> (MakesFederatedCall
                                                                  'Galley "on-conversation-updated"
                                                                :> (MakesFederatedCall
                                                                      'Brig "get-mls-clients"
                                                                    :> (CanThrow 'ConvAccessDenied
                                                                        :> (CanThrow
                                                                              'ConvMemberNotFound
                                                                            :> (CanThrow
                                                                                  'ConvNotFound
                                                                                :> (CanThrow
                                                                                      'LegalHoldNotEnabled
                                                                                    :> (CanThrow
                                                                                          'MissingLegalholdConsent
                                                                                        :> (CanThrow
                                                                                              'MLSClientMismatch
                                                                                            :> (CanThrow
                                                                                                  'MLSClientSenderUserMismatch
                                                                                                :> (CanThrow
                                                                                                      'MLSCommitMissingReferences
                                                                                                    :> (CanThrow
                                                                                                          'MLSGroupConversationMismatch
                                                                                                        :> (CanThrow
                                                                                                              'MLSInvalidLeafNodeIndex
                                                                                                            :> (CanThrow
                                                                                                                  'MLSNotEnabled
                                                                                                                :> (CanThrow
                                                                                                                      'MLSProposalNotFound
                                                                                                                    :> (CanThrow
                                                                                                                          'MLSProtocolErrorTag
                                                                                                                        :> (CanThrow
                                                                                                                              'MLSSelfRemovalNotAllowed
                                                                                                                            :> (CanThrow
                                                                                                                                  'MLSStaleMessage
                                                                                                                                :> (CanThrow
                                                                                                                                      'MLSSubConvClientNotInParent
                                                                                                                                    :> (CanThrow
                                                                                                                                          'MLSUnsupportedMessage
                                                                                                                                        :> (CanThrow
                                                                                                                                              'MLSUnsupportedProposal
                                                                                                                                            :> (CanThrow
                                                                                                                                                  MLSProposalFailure
                                                                                                                                                :> (CanThrow
                                                                                                                                                      NonFederatingBackends
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          UnreachableBackends
                                                                                                                                                        :> ("messages"
                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                :> (ZClient
                                                                                                                                                                    :> (ZConn
                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                              '[MLS]
                                                                                                                                                                              (RawMLS
                                                                                                                                                                                 Message)
                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                 'POST
                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                 '[Respond
                                                                                                                                                                                     201
                                                                                                                                                                                     "Message sent"
                                                                                                                                                                                     MLSMessageSendingStatus]
                                                                                                                                                                                 MLSMessageSendingStatus)))))))))))))))))))))))))))))))))
                                         :<|> (Named
                                                 "mls-commit-bundle"
                                                 ("mls"
                                                  :> (Summary "Post a MLS CommitBundle"
                                                      :> (From 'V5
                                                          :> (MakesFederatedCall
                                                                'Galley "on-mls-message-sent"
                                                              :> (MakesFederatedCall
                                                                    'Galley "mls-welcome"
                                                                  :> (MakesFederatedCall
                                                                        'Galley
                                                                        "send-mls-commit-bundle"
                                                                      :> (MakesFederatedCall
                                                                            'Galley
                                                                            "on-conversation-updated"
                                                                          :> (MakesFederatedCall
                                                                                'Brig
                                                                                "get-mls-clients"
                                                                              :> (MakesFederatedCall
                                                                                    'Brig
                                                                                    "get-users-by-ids"
                                                                                  :> (MakesFederatedCall
                                                                                        'Brig
                                                                                        "api-version"
                                                                                      :> (CanThrow
                                                                                            'ConvAccessDenied
                                                                                          :> (CanThrow
                                                                                                'ConvMemberNotFound
                                                                                              :> (CanThrow
                                                                                                    'ConvNotFound
                                                                                                  :> (CanThrow
                                                                                                        'LegalHoldNotEnabled
                                                                                                      :> (CanThrow
                                                                                                            'MissingLegalholdConsent
                                                                                                          :> (CanThrow
                                                                                                                'MLSClientMismatch
                                                                                                              :> (CanThrow
                                                                                                                    'MLSClientSenderUserMismatch
                                                                                                                  :> (CanThrow
                                                                                                                        'MLSCommitMissingReferences
                                                                                                                      :> (CanThrow
                                                                                                                            'MLSGroupConversationMismatch
                                                                                                                          :> (CanThrow
                                                                                                                                'MLSInvalidLeafNodeIndex
                                                                                                                              :> (CanThrow
                                                                                                                                    'MLSNotEnabled
                                                                                                                                  :> (CanThrow
                                                                                                                                        'MLSProposalNotFound
                                                                                                                                      :> (CanThrow
                                                                                                                                            'MLSProtocolErrorTag
                                                                                                                                          :> (CanThrow
                                                                                                                                                'MLSSelfRemovalNotAllowed
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'MLSStaleMessage
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'MLSSubConvClientNotInParent
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'MLSUnsupportedMessage
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'MLSUnsupportedProposal
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'MLSWelcomeMismatch
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        'MLSLegalholdIncompatible
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            MLSProposalFailure
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                NonFederatingBackends
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    UnreachableBackends
                                                                                                                                                                                  :> ("commit-bundles"
                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                          :> (ZClient
                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                        '[MLS]
                                                                                                                                                                                                        (RawMLS
                                                                                                                                                                                                           CommitBundle)
                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                           'POST
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           '[Respond
                                                                                                                                                                                                               201
                                                                                                                                                                                                               "Commit accepted and forwarded"
                                                                                                                                                                                                               MLSMessageSendingStatus]
                                                                                                                                                                                                           MLSMessageSendingStatus))))))))))))))))))))))))))))))))))))))
                                               :<|> Named
                                                      "mls-public-keys"
                                                      ("mls"
                                                       :> (Summary
                                                             "Get public keys used by the backend to sign external proposals"
                                                           :> (Description
                                                                 "The format of the returned key is determined by the `format` query parameter:\n - raw (default): base64-encoded raw public keys\n - jwk: keys are nested objects in JWK format."
                                                               :> (From 'V5
                                                                   :> (CanThrow 'MLSNotEnabled
                                                                       :> ("public-keys"
                                                                           :> (ZLocalUser
                                                                               :> (QueryParam
                                                                                     "format"
                                                                                     MLSPublicKeyFormat
                                                                                   :> MultiVerb
                                                                                        'GET
                                                                                        '[JSON]
                                                                                        '[Respond
                                                                                            200
                                                                                            "Public keys"
                                                                                            (MLSKeysByPurpose
                                                                                               (MLSKeys
                                                                                                  SomeKey))]
                                                                                        (MLSKeysByPurpose
                                                                                           (MLSKeys
                                                                                              SomeKey))))))))))))
                                        :<|> (CustomBackendAPI
                                              :<|> ((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"
                                                                    :> (MakesFederatedCall
                                                                          'Galley
                                                                          "on-conversation-updated"
                                                                        :> (MakesFederatedCall
                                                                              'Galley
                                                                              "on-mls-message-sent"
                                                                            :> (MakesFederatedCall
                                                                                  'Brig
                                                                                  "get-users-by-ids"
                                                                                :> (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"
                                                                                :> (MakesFederatedCall
                                                                                      'Galley
                                                                                      "on-conversation-updated"
                                                                                    :> (MakesFederatedCall
                                                                                          'Galley
                                                                                          "on-mls-message-sent"
                                                                                        :> (MakesFederatedCall
                                                                                              'Brig
                                                                                              "get-users-by-ids"
                                                                                            :> (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"
                                                                                      :> (MakesFederatedCall
                                                                                            'Galley
                                                                                            "on-conversation-updated"
                                                                                          :> (MakesFederatedCall
                                                                                                'Galley
                                                                                                "on-mls-message-sent"
                                                                                              :> (MakesFederatedCall
                                                                                                    'Brig
                                                                                                    "get-users-by-ids"
                                                                                                  :> (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"
                                                                                            :> (MakesFederatedCall
                                                                                                  'Galley
                                                                                                  "on-conversation-updated"
                                                                                                :> (MakesFederatedCall
                                                                                                      'Galley
                                                                                                      "on-mls-message-sent"
                                                                                                    :> (MakesFederatedCall
                                                                                                          'Brig
                                                                                                          "get-users-by-ids"
                                                                                                        :> (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"
                                                                                                 :> (MakesFederatedCall
                                                                                                       'Galley
                                                                                                       "on-conversation-updated"
                                                                                                     :> (MakesFederatedCall
                                                                                                           'Galley
                                                                                                           "on-mls-message-sent"
                                                                                                         :> (MakesFederatedCall
                                                                                                               'Brig
                                                                                                               "get-users-by-ids"
                                                                                                             :> (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"]
                                                                                                                                                                                                  ())))))))))))))))))))))))))))))))
                                                    :<|> ((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)))))))))))))))
                                                          :<|> TeamNotificationAPI))))))))))
   :<|> (("i"
          :> (Named
                "status"
                ("status" :> MultiVerb 'GET '[JSON] '[RespondEmpty 200 "OK"] ())
              :<|> (Named
                      "delete-user"
                      (Summary
                         "Remove a user from their teams and conversations and erase their clients"
                       :> (MakesFederatedCall 'Galley "on-conversation-updated"
                           :> (MakesFederatedCall 'Galley "on-mls-message-sent"
                               :> (ZLocalUser
                                   :> (ZOptConn
                                       :> ("user"
                                           :> MultiVerb
                                                'DELETE
                                                '[JSON]
                                                '[RespondEmpty 200 "Remove a user from Galley"]
                                                ()))))))
                    :<|> (Named
                            "connect"
                            (Summary "Create a connect conversation (deprecated)"
                             :> (MakesFederatedCall 'Brig "api-version"
                                 :> (MakesFederatedCall 'Galley "on-conversation-created"
                                     :> (MakesFederatedCall 'Galley "on-conversation-updated"
                                         :> (CanThrow 'ConvNotFound
                                             :> (CanThrow 'InvalidOperation
                                                 :> (CanThrow 'NotConnected
                                                     :> (CanThrow UnreachableBackends
                                                         :> (ZLocalUser
                                                             :> (ZOptConn
                                                                 :> ("conversations"
                                                                     :> ("connect"
                                                                         :> (ReqBody '[JSON] Connect
                                                                             :> MultiVerb
                                                                                  'POST
                                                                                  '[JSON]
                                                                                  '[WithHeaders
                                                                                      ConversationHeaders
                                                                                      Conversation
                                                                                      (VersionedRespond
                                                                                         'V6
                                                                                         200
                                                                                         "Conversation existed"
                                                                                         Conversation),
                                                                                    WithHeaders
                                                                                      ConversationHeaders
                                                                                      Conversation
                                                                                      (VersionedRespond
                                                                                         'V6
                                                                                         201
                                                                                         "Conversation created"
                                                                                         Conversation)]
                                                                                  (ResponseForExistedCreated
                                                                                     Conversation))))))))))))))
                          :<|> (Named
                                  "get-conversation-clients"
                                  (Summary "Get mls conversation client list"
                                   :> (CanThrow 'ConvNotFound
                                       :> ("group"
                                           :> (Capture "gid" GroupId
                                               :> MultiVerb
                                                    'GET
                                                    '[JSON]
                                                    '[Respond 200 "Clients" ClientList]
                                                    ClientList))))
                                :<|> (Named
                                        "guard-legalhold-policy-conflicts"
                                        ("guard-legalhold-policy-conflicts"
                                         :> (CanThrow 'MissingLegalholdConsent
                                             :> (CanThrow 'MissingLegalholdConsentOldClients
                                                 :> (ReqBody '[JSON] GuardLegalholdPolicyConflicts
                                                     :> MultiVerb
                                                          'PUT
                                                          '[JSON]
                                                          '[RespondEmpty
                                                              200 "Guard Legalhold Policy"]
                                                          ()))))
                                      :<|> (("legalhold"
                                             :> ("whitelisted-teams"
                                                 :> (Capture "tid" TeamId
                                                     :> (Named
                                                           "set-team-legalhold-whitelisted"
                                                           (MultiVerb
                                                              'PUT
                                                              '[JSON]
                                                              '[RespondEmpty
                                                                  200 "Team Legalhold Whitelisted"]
                                                              ())
                                                         :<|> (Named
                                                                 "unset-team-legalhold-whitelisted"
                                                                 (MultiVerb
                                                                    'DELETE
                                                                    '[JSON]
                                                                    '[RespondEmpty
                                                                        204
                                                                        "Team Legalhold un-Whitelisted"]
                                                                    ())
                                                               :<|> Named
                                                                      "get-team-legalhold-whitelisted"
                                                                      (MultiVerb
                                                                         'GET
                                                                         '[JSON]
                                                                         '[RespondEmpty
                                                                             404
                                                                             "Team not Legalhold Whitelisted",
                                                                           RespondEmpty
                                                                             200
                                                                             "Team Legalhold Whitelisted"]
                                                                         Bool))))))
                                            :<|> (("teams"
                                                   :> (Capture "tid" TeamId
                                                       :> (Named
                                                             "get-team-internal"
                                                             (CanThrow 'TeamNotFound
                                                              :> Get '[JSON] TeamData)
                                                           :<|> (Named
                                                                   "create-binding-team"
                                                                   (ZUser
                                                                    :> (ReqBody
                                                                          '[JSON] BindingNewTeam
                                                                        :> MultiVerb
                                                                             'PUT
                                                                             '[JSON]
                                                                             '[WithHeaders
                                                                                 '[Header
                                                                                     "Location"
                                                                                     TeamId]
                                                                                 TeamId
                                                                                 (RespondEmpty
                                                                                    201 "OK")]
                                                                             TeamId))
                                                                 :<|> (Named
                                                                         "delete-binding-team"
                                                                         (CanThrow 'NoBindingTeam
                                                                          :> (CanThrow
                                                                                'NotAOneMemberTeam
                                                                              :> (CanThrow
                                                                                    'DeleteQueueFull
                                                                                  :> (CanThrow
                                                                                        'TeamNotFound
                                                                                      :> (QueryFlag
                                                                                            "force"
                                                                                          :> MultiVerb
                                                                                               'DELETE
                                                                                               '[JSON]
                                                                                               '[RespondEmpty
                                                                                                   202
                                                                                                   "OK"]
                                                                                               ())))))
                                                                       :<|> (Named
                                                                               "get-team-name"
                                                                               ("name"
                                                                                :> (CanThrow
                                                                                      'TeamNotFound
                                                                                    :> Get
                                                                                         '[JSON]
                                                                                         TeamName))
                                                                             :<|> (Named
                                                                                     "update-team-status"
                                                                                     ("status"
                                                                                      :> (CanThrow
                                                                                            'TeamNotFound
                                                                                          :> (CanThrow
                                                                                                'InvalidTeamStatusUpdate
                                                                                              :> (ReqBody
                                                                                                    '[JSON]
                                                                                                    TeamStatusUpdate
                                                                                                  :> MultiVerb
                                                                                                       'PUT
                                                                                                       '[JSON]
                                                                                                       '[RespondEmpty
                                                                                                           200
                                                                                                           "OK"]
                                                                                                       ()))))
                                                                                   :<|> (("members"
                                                                                          :> (Named
                                                                                                "unchecked-add-team-member"
                                                                                                (CanThrow
                                                                                                   'TooManyTeamMembers
                                                                                                 :> (CanThrow
                                                                                                       'TooManyTeamMembersOnTeamWithLegalhold
                                                                                                     :> (CanThrow
                                                                                                           'TooManyTeamAdmins
                                                                                                         :> (ReqBody
                                                                                                               '[JSON]
                                                                                                               NewTeamMember
                                                                                                             :> MultiVerb
                                                                                                                  'POST
                                                                                                                  '[JSON]
                                                                                                                  '[RespondEmpty
                                                                                                                      200
                                                                                                                      "OK"]
                                                                                                                  ()))))
                                                                                              :<|> (Named
                                                                                                      "unchecked-get-team-members"
                                                                                                      (QueryParam'
                                                                                                         '[Strict]
                                                                                                         "maxResults"
                                                                                                         (Range
                                                                                                            1
                                                                                                            HardTruncationLimit
                                                                                                            Int32)
                                                                                                       :> Get
                                                                                                            '[JSON]
                                                                                                            TeamMemberList)
                                                                                                    :<|> (Named
                                                                                                            "unchecked-get-team-member"
                                                                                                            (Capture
                                                                                                               "uid"
                                                                                                               UserId
                                                                                                             :> (CanThrow
                                                                                                                   'TeamMemberNotFound
                                                                                                                 :> Get
                                                                                                                      '[JSON]
                                                                                                                      TeamMember))
                                                                                                          :<|> (Named
                                                                                                                  "can-user-join-team"
                                                                                                                  ("check"
                                                                                                                   :> (CanThrow
                                                                                                                         'TooManyTeamMembersOnTeamWithLegalhold
                                                                                                                       :> MultiVerb
                                                                                                                            'GET
                                                                                                                            '[JSON]
                                                                                                                            '[RespondEmpty
                                                                                                                                200
                                                                                                                                "User can join"]
                                                                                                                            ()))
                                                                                                                :<|> Named
                                                                                                                       "unchecked-update-team-member"
                                                                                                                       (CanThrow
                                                                                                                          'AccessDenied
                                                                                                                        :> (CanThrow
                                                                                                                              'InvalidPermissions
                                                                                                                            :> (CanThrow
                                                                                                                                  'TeamNotFound
                                                                                                                                :> (CanThrow
                                                                                                                                      'TeamMemberNotFound
                                                                                                                                    :> (CanThrow
                                                                                                                                          'TooManyTeamAdmins
                                                                                                                                        :> (CanThrow
                                                                                                                                              'NotATeamMember
                                                                                                                                            :> (CanThrow
                                                                                                                                                  OperationDenied
                                                                                                                                                :> (ReqBody
                                                                                                                                                      '[JSON]
                                                                                                                                                      NewTeamMember
                                                                                                                                                    :> MultiVerb
                                                                                                                                                         'PUT
                                                                                                                                                         '[JSON]
                                                                                                                                                         '[RespondEmpty
                                                                                                                                                             200
                                                                                                                                                             ""]
                                                                                                                                                         ())))))))))))))
                                                                                         :<|> (Named
                                                                                                 "user-is-team-owner"
                                                                                                 ("is-team-owner"
                                                                                                  :> (Capture
                                                                                                        "uid"
                                                                                                        UserId
                                                                                                      :> (CanThrow
                                                                                                            'AccessDenied
                                                                                                          :> (CanThrow
                                                                                                                'TeamMemberNotFound
                                                                                                              :> (CanThrow
                                                                                                                    'NotATeamMember
                                                                                                                  :> MultiVerb
                                                                                                                       'GET
                                                                                                                       '[JSON]
                                                                                                                       '[RespondEmpty
                                                                                                                           200
                                                                                                                           "User is team owner"]
                                                                                                                       ())))))
                                                                                               :<|> ("search-visibility"
                                                                                                     :> (Named
                                                                                                           "get-search-visibility-internal"
                                                                                                           (Get
                                                                                                              '[JSON]
                                                                                                              TeamSearchVisibilityView)
                                                                                                         :<|> Named
                                                                                                                "set-search-visibility-internal"
                                                                                                                (CanThrow
                                                                                                                   'TeamSearchVisibilityNotEnabled
                                                                                                                 :> (CanThrow
                                                                                                                       OperationDenied
                                                                                                                     :> (CanThrow
                                                                                                                           'NotATeamMember
                                                                                                                         :> (CanThrow
                                                                                                                               'TeamNotFound
                                                                                                                             :> (ReqBody
                                                                                                                                   '[JSON]
                                                                                                                                   TeamSearchVisibilityView
                                                                                                                                 :> MultiVerb
                                                                                                                                      'PUT
                                                                                                                                      '[JSON]
                                                                                                                                      '[RespondEmpty
                                                                                                                                          204
                                                                                                                                          "OK"]
                                                                                                                                      ()))))))))))))))))
                                                  :<|> ((Named
                                                           "get-team-members"
                                                           (CanThrow 'NonBindingTeam
                                                            :> (CanThrow 'TeamNotFound
                                                                :> ("users"
                                                                    :> (Capture "uid" UserId
                                                                        :> ("team"
                                                                            :> ("members"
                                                                                :> Get
                                                                                     '[JSON]
                                                                                     TeamMemberList))))))
                                                         :<|> (Named
                                                                 "get-team-id"
                                                                 (CanThrow 'NonBindingTeam
                                                                  :> (CanThrow 'TeamNotFound
                                                                      :> ("users"
                                                                          :> (Capture "uid" UserId
                                                                              :> ("team"
                                                                                  :> Get
                                                                                       '[JSON]
                                                                                       TeamId)))))
                                                               :<|> (Named
                                                                       "test-get-clients"
                                                                       ("test"
                                                                        :> ("clients"
                                                                            :> (ZUser
                                                                                :> Get
                                                                                     '[JSON]
                                                                                     [ClientId])))
                                                                     :<|> (Named
                                                                             "test-add-client"
                                                                             ("clients"
                                                                              :> (ZUser
                                                                                  :> (Capture
                                                                                        "cid"
                                                                                        ClientId
                                                                                      :> MultiVerb
                                                                                           'POST
                                                                                           '[JSON]
                                                                                           '[RespondEmpty
                                                                                               200
                                                                                               "OK"]
                                                                                           ())))
                                                                           :<|> (Named
                                                                                   "test-delete-client"
                                                                                   ("clients"
                                                                                    :> (ZUser
                                                                                        :> (Capture
                                                                                              "cid"
                                                                                              ClientId
                                                                                            :> MultiVerb
                                                                                                 'DELETE
                                                                                                 '[JSON]
                                                                                                 '[RespondEmpty
                                                                                                     200
                                                                                                     "OK"]
                                                                                                 ())))
                                                                                 :<|> (Named
                                                                                         "add-service"
                                                                                         ("services"
                                                                                          :> (ReqBody
                                                                                                '[JSON]
                                                                                                Service
                                                                                              :> MultiVerb
                                                                                                   'POST
                                                                                                   '[JSON]
                                                                                                   '[RespondEmpty
                                                                                                       200
                                                                                                       "OK"]
                                                                                                   ()))
                                                                                       :<|> (Named
                                                                                               "delete-service"
                                                                                               ("services"
                                                                                                :> (ReqBody
                                                                                                      '[JSON]
                                                                                                      ServiceRef
                                                                                                    :> MultiVerb
                                                                                                         'DELETE
                                                                                                         '[JSON]
                                                                                                         '[RespondEmpty
                                                                                                             200
                                                                                                             "OK"]
                                                                                                         ()))
                                                                                             :<|> (Named
                                                                                                     "i-add-bot"
                                                                                                     (CanThrow
                                                                                                        ('ActionDenied
                                                                                                           'AddConversationMember)
                                                                                                      :> (CanThrow
                                                                                                            'ConvNotFound
                                                                                                          :> (CanThrow
                                                                                                                'InvalidOperation
                                                                                                              :> (CanThrow
                                                                                                                    'TooManyMembers
                                                                                                                  :> ("bots"
                                                                                                                      :> (ZLocalUser
                                                                                                                          :> (ZConn
                                                                                                                              :> (ReqBody
                                                                                                                                    '[JSON]
                                                                                                                                    AddBot
                                                                                                                                  :> Post
                                                                                                                                       '[JSON]
                                                                                                                                       Event))))))))
                                                                                                   :<|> (Named
                                                                                                           "delete-bot"
                                                                                                           (CanThrow
                                                                                                              'ConvNotFound
                                                                                                            :> (CanThrow
                                                                                                                  ('ActionDenied
                                                                                                                     'RemoveConversationMember)
                                                                                                                :> ("bots"
                                                                                                                    :> (ZLocalUser
                                                                                                                        :> (ZOptConn
                                                                                                                            :> (ReqBody
                                                                                                                                  '[JSON]
                                                                                                                                  RemoveBot
                                                                                                                                :> MultiVerb
                                                                                                                                     'DELETE
                                                                                                                                     '[JSON]
                                                                                                                                     (UpdateResponses
                                                                                                                                        "Bot not found"
                                                                                                                                        "Bot deleted"
                                                                                                                                        Event)
                                                                                                                                     (UpdateResult
                                                                                                                                        Event)))))))
                                                                                                         :<|> (Named
                                                                                                                 "put-custom-backend"
                                                                                                                 ("custom-backend"
                                                                                                                  :> ("by-domain"
                                                                                                                      :> (Capture
                                                                                                                            "domain"
                                                                                                                            Domain
                                                                                                                          :> (ReqBody
                                                                                                                                '[JSON]
                                                                                                                                CustomBackend
                                                                                                                              :> MultiVerb
                                                                                                                                   'PUT
                                                                                                                                   '[JSON]
                                                                                                                                   '[RespondEmpty
                                                                                                                                       201
                                                                                                                                       "OK"]
                                                                                                                                   ()))))
                                                                                                               :<|> Named
                                                                                                                      "delete-custom-backend"
                                                                                                                      ("custom-backend"
                                                                                                                       :> ("by-domain"
                                                                                                                           :> (Capture
                                                                                                                                 "domain"
                                                                                                                                 Domain
                                                                                                                               :> MultiVerb
                                                                                                                                    'DELETE
                                                                                                                                    '[JSON]
                                                                                                                                    '[RespondEmpty
                                                                                                                                        200
                                                                                                                                        "OK"]
                                                                                                                                    ())))))))))))))
                                                        :<|> (Named
                                                                "upsert-one2one"
                                                                (Summary
                                                                   "Create or Update a connect or one2one conversation."
                                                                 :> ("conversations"
                                                                     :> ("one2one"
                                                                         :> ("upsert"
                                                                             :> (ReqBody
                                                                                   '[JSON]
                                                                                   UpsertOne2OneConversationRequest
                                                                                 :> MultiVerb
                                                                                      'POST
                                                                                      '[JSON]
                                                                                      '[RespondEmpty
                                                                                          200
                                                                                          "Upsert One2One Policy"]
                                                                                      ())))))
                                                              :<|> ((((Named
                                                                         '("iget", LegalholdConfig)
                                                                         (Description ""
                                                                          :> (Summary
                                                                                "Get config for legalhold"
                                                                              :> (CanThrow
                                                                                    OperationDenied
                                                                                  :> (CanThrow
                                                                                        'NotATeamMember
                                                                                      :> (CanThrow
                                                                                            'TeamNotFound
                                                                                          :> ("teams"
                                                                                              :> (Capture
                                                                                                    "tid"
                                                                                                    TeamId
                                                                                                  :> ("features"
                                                                                                      :> ("legalhold"
                                                                                                          :> Get
                                                                                                               '[JSON]
                                                                                                               (LockableFeature
                                                                                                                  LegalholdConfig))))))))))
                                                                       :<|> (Named
                                                                               '("iput",
                                                                                 LegalholdConfig)
                                                                               (Description ""
                                                                                :> (Summary
                                                                                      "Put config for legalhold"
                                                                                    :> (CanThrow
                                                                                          OperationDenied
                                                                                        :> (CanThrow
                                                                                              'NotATeamMember
                                                                                            :> (CanThrow
                                                                                                  'TeamNotFound
                                                                                                :> (CanThrow
                                                                                                      TeamFeatureError
                                                                                                    :> (CanThrowMany
                                                                                                          '[ 'ActionDenied
                                                                                                               'RemoveConversationMember,
                                                                                                             'CannotEnableLegalHoldServiceLargeTeam,
                                                                                                             'LegalHoldNotEnabled,
                                                                                                             'LegalHoldDisableUnimplemented,
                                                                                                             'LegalHoldServiceNotRegistered,
                                                                                                             'UserLegalHoldIllegalOperation,
                                                                                                             'LegalHoldCouldNotBlockConnections]
                                                                                                        :> ("teams"
                                                                                                            :> (Capture
                                                                                                                  "tid"
                                                                                                                  TeamId
                                                                                                                :> ("features"
                                                                                                                    :> ("legalhold"
                                                                                                                        :> (ReqBody
                                                                                                                              '[JSON]
                                                                                                                              (Feature
                                                                                                                                 LegalholdConfig)
                                                                                                                            :> Put
                                                                                                                                 '[JSON]
                                                                                                                                 (LockableFeature
                                                                                                                                    LegalholdConfig)))))))))))))
                                                                             :<|> Named
                                                                                    '("ipatch",
                                                                                      LegalholdConfig)
                                                                                    (Description ""
                                                                                     :> (Summary
                                                                                           "Patch config for legalhold"
                                                                                         :> (CanThrow
                                                                                               OperationDenied
                                                                                             :> (CanThrow
                                                                                                   'NotATeamMember
                                                                                                 :> (CanThrow
                                                                                                       'TeamNotFound
                                                                                                     :> (CanThrow
                                                                                                           TeamFeatureError
                                                                                                         :> (CanThrowMany
                                                                                                               '[ 'ActionDenied
                                                                                                                    'RemoveConversationMember,
                                                                                                                  'CannotEnableLegalHoldServiceLargeTeam,
                                                                                                                  'LegalHoldNotEnabled,
                                                                                                                  'LegalHoldDisableUnimplemented,
                                                                                                                  'LegalHoldServiceNotRegistered,
                                                                                                                  'UserLegalHoldIllegalOperation,
                                                                                                                  'LegalHoldCouldNotBlockConnections]
                                                                                                             :> ("teams"
                                                                                                                 :> (Capture
                                                                                                                       "tid"
                                                                                                                       TeamId
                                                                                                                     :> ("features"
                                                                                                                         :> ("legalhold"
                                                                                                                             :> (ReqBody
                                                                                                                                   '[JSON]
                                                                                                                                   (LockableFeaturePatch
                                                                                                                                      LegalholdConfig)
                                                                                                                                 :> Patch
                                                                                                                                      '[JSON]
                                                                                                                                      (LockableFeature
                                                                                                                                         LegalholdConfig)))))))))))))))
                                                                      :<|> ((Named
                                                                               '("iget", SSOConfig)
                                                                               (Description ""
                                                                                :> (Summary
                                                                                      "Get config for sso"
                                                                                    :> (CanThrow
                                                                                          OperationDenied
                                                                                        :> (CanThrow
                                                                                              'NotATeamMember
                                                                                            :> (CanThrow
                                                                                                  'TeamNotFound
                                                                                                :> ("teams"
                                                                                                    :> (Capture
                                                                                                          "tid"
                                                                                                          TeamId
                                                                                                        :> ("features"
                                                                                                            :> ("sso"
                                                                                                                :> Get
                                                                                                                     '[JSON]
                                                                                                                     (LockableFeature
                                                                                                                        SSOConfig))))))))))
                                                                             :<|> (Named
                                                                                     '("iput",
                                                                                       SSOConfig)
                                                                                     (Description ""
                                                                                      :> (Summary
                                                                                            "Put config for sso"
                                                                                          :> (CanThrow
                                                                                                OperationDenied
                                                                                              :> (CanThrow
                                                                                                    'NotATeamMember
                                                                                                  :> (CanThrow
                                                                                                        'TeamNotFound
                                                                                                      :> (CanThrow
                                                                                                            TeamFeatureError
                                                                                                          :> (CanThrowMany
                                                                                                                '[]
                                                                                                              :> ("teams"
                                                                                                                  :> (Capture
                                                                                                                        "tid"
                                                                                                                        TeamId
                                                                                                                      :> ("features"
                                                                                                                          :> ("sso"
                                                                                                                              :> (ReqBody
                                                                                                                                    '[JSON]
                                                                                                                                    (Feature
                                                                                                                                       SSOConfig)
                                                                                                                                  :> Put
                                                                                                                                       '[JSON]
                                                                                                                                       (LockableFeature
                                                                                                                                          SSOConfig)))))))))))))
                                                                                   :<|> Named
                                                                                          '("ipatch",
                                                                                            SSOConfig)
                                                                                          (Description
                                                                                             ""
                                                                                           :> (Summary
                                                                                                 "Patch config for sso"
                                                                                               :> (CanThrow
                                                                                                     OperationDenied
                                                                                                   :> (CanThrow
                                                                                                         'NotATeamMember
                                                                                                       :> (CanThrow
                                                                                                             'TeamNotFound
                                                                                                           :> (CanThrow
                                                                                                                 TeamFeatureError
                                                                                                               :> (CanThrowMany
                                                                                                                     '[]
                                                                                                                   :> ("teams"
                                                                                                                       :> (Capture
                                                                                                                             "tid"
                                                                                                                             TeamId
                                                                                                                           :> ("features"
                                                                                                                               :> ("sso"
                                                                                                                                   :> (ReqBody
                                                                                                                                         '[JSON]
                                                                                                                                         (LockableFeaturePatch
                                                                                                                                            SSOConfig)
                                                                                                                                       :> Patch
                                                                                                                                            '[JSON]
                                                                                                                                            (LockableFeature
                                                                                                                                               SSOConfig)))))))))))))))
                                                                            :<|> ((Named
                                                                                     '("iget",
                                                                                       SearchVisibilityAvailableConfig)
                                                                                     (Description ""
                                                                                      :> (Summary
                                                                                            "Get config for searchVisibility"
                                                                                          :> (CanThrow
                                                                                                OperationDenied
                                                                                              :> (CanThrow
                                                                                                    'NotATeamMember
                                                                                                  :> (CanThrow
                                                                                                        'TeamNotFound
                                                                                                      :> ("teams"
                                                                                                          :> (Capture
                                                                                                                "tid"
                                                                                                                TeamId
                                                                                                              :> ("features"
                                                                                                                  :> ("searchVisibility"
                                                                                                                      :> Get
                                                                                                                           '[JSON]
                                                                                                                           (LockableFeature
                                                                                                                              SearchVisibilityAvailableConfig))))))))))
                                                                                   :<|> (Named
                                                                                           '("iput",
                                                                                             SearchVisibilityAvailableConfig)
                                                                                           (Description
                                                                                              ""
                                                                                            :> (Summary
                                                                                                  "Put config for searchVisibility"
                                                                                                :> (CanThrow
                                                                                                      OperationDenied
                                                                                                    :> (CanThrow
                                                                                                          'NotATeamMember
                                                                                                        :> (CanThrow
                                                                                                              'TeamNotFound
                                                                                                            :> (CanThrow
                                                                                                                  TeamFeatureError
                                                                                                                :> (CanThrowMany
                                                                                                                      '[]
                                                                                                                    :> ("teams"
                                                                                                                        :> (Capture
                                                                                                                              "tid"
                                                                                                                              TeamId
                                                                                                                            :> ("features"
                                                                                                                                :> ("searchVisibility"
                                                                                                                                    :> (ReqBody
                                                                                                                                          '[JSON]
                                                                                                                                          (Feature
                                                                                                                                             SearchVisibilityAvailableConfig)
                                                                                                                                        :> Put
                                                                                                                                             '[JSON]
                                                                                                                                             (LockableFeature
                                                                                                                                                SearchVisibilityAvailableConfig)))))))))))))
                                                                                         :<|> Named
                                                                                                '("ipatch",
                                                                                                  SearchVisibilityAvailableConfig)
                                                                                                (Description
                                                                                                   ""
                                                                                                 :> (Summary
                                                                                                       "Patch config for searchVisibility"
                                                                                                     :> (CanThrow
                                                                                                           OperationDenied
                                                                                                         :> (CanThrow
                                                                                                               'NotATeamMember
                                                                                                             :> (CanThrow
                                                                                                                   'TeamNotFound
                                                                                                                 :> (CanThrow
                                                                                                                       TeamFeatureError
                                                                                                                     :> (CanThrowMany
                                                                                                                           '[]
                                                                                                                         :> ("teams"
                                                                                                                             :> (Capture
                                                                                                                                   "tid"
                                                                                                                                   TeamId
                                                                                                                                 :> ("features"
                                                                                                                                     :> ("searchVisibility"
                                                                                                                                         :> (ReqBody
                                                                                                                                               '[JSON]
                                                                                                                                               (LockableFeaturePatch
                                                                                                                                                  SearchVisibilityAvailableConfig)
                                                                                                                                             :> Patch
                                                                                                                                                  '[JSON]
                                                                                                                                                  (LockableFeature
                                                                                                                                                     SearchVisibilityAvailableConfig)))))))))))))))
                                                                                  :<|> ((Named
                                                                                           '("iget",
                                                                                             SearchVisibilityInboundConfig)
                                                                                           (Description
                                                                                              ""
                                                                                            :> (Summary
                                                                                                  "Get config for searchVisibilityInbound"
                                                                                                :> (CanThrow
                                                                                                      OperationDenied
                                                                                                    :> (CanThrow
                                                                                                          'NotATeamMember
                                                                                                        :> (CanThrow
                                                                                                              'TeamNotFound
                                                                                                            :> ("teams"
                                                                                                                :> (Capture
                                                                                                                      "tid"
                                                                                                                      TeamId
                                                                                                                    :> ("features"
                                                                                                                        :> ("searchVisibilityInbound"
                                                                                                                            :> Get
                                                                                                                                 '[JSON]
                                                                                                                                 (LockableFeature
                                                                                                                                    SearchVisibilityInboundConfig))))))))))
                                                                                         :<|> (Named
                                                                                                 '("iput",
                                                                                                   SearchVisibilityInboundConfig)
                                                                                                 (Description
                                                                                                    ""
                                                                                                  :> (Summary
                                                                                                        "Put config for searchVisibilityInbound"
                                                                                                      :> (CanThrow
                                                                                                            OperationDenied
                                                                                                          :> (CanThrow
                                                                                                                'NotATeamMember
                                                                                                              :> (CanThrow
                                                                                                                    'TeamNotFound
                                                                                                                  :> (CanThrow
                                                                                                                        TeamFeatureError
                                                                                                                      :> (CanThrowMany
                                                                                                                            '[]
                                                                                                                          :> ("teams"
                                                                                                                              :> (Capture
                                                                                                                                    "tid"
                                                                                                                                    TeamId
                                                                                                                                  :> ("features"
                                                                                                                                      :> ("searchVisibilityInbound"
                                                                                                                                          :> (ReqBody
                                                                                                                                                '[JSON]
                                                                                                                                                (Feature
                                                                                                                                                   SearchVisibilityInboundConfig)
                                                                                                                                              :> Put
                                                                                                                                                   '[JSON]
                                                                                                                                                   (LockableFeature
                                                                                                                                                      SearchVisibilityInboundConfig)))))))))))))
                                                                                               :<|> Named
                                                                                                      '("ipatch",
                                                                                                        SearchVisibilityInboundConfig)
                                                                                                      (Description
                                                                                                         ""
                                                                                                       :> (Summary
                                                                                                             "Patch config for searchVisibilityInbound"
                                                                                                           :> (CanThrow
                                                                                                                 OperationDenied
                                                                                                               :> (CanThrow
                                                                                                                     'NotATeamMember
                                                                                                                   :> (CanThrow
                                                                                                                         'TeamNotFound
                                                                                                                       :> (CanThrow
                                                                                                                             TeamFeatureError
                                                                                                                           :> (CanThrowMany
                                                                                                                                 '[]
                                                                                                                               :> ("teams"
                                                                                                                                   :> (Capture
                                                                                                                                         "tid"
                                                                                                                                         TeamId
                                                                                                                                       :> ("features"
                                                                                                                                           :> ("searchVisibilityInbound"
                                                                                                                                               :> (ReqBody
                                                                                                                                                     '[JSON]
                                                                                                                                                     (LockableFeaturePatch
                                                                                                                                                        SearchVisibilityInboundConfig)
                                                                                                                                                   :> Patch
                                                                                                                                                        '[JSON]
                                                                                                                                                        (LockableFeature
                                                                                                                                                           SearchVisibilityInboundConfig)))))))))))))))
                                                                                        :<|> ((Named
                                                                                                 '("iget",
                                                                                                   ValidateSAMLEmailsConfig)
                                                                                                 (Description
                                                                                                    ""
                                                                                                  :> (Summary
                                                                                                        "Get config for validateSAMLemails"
                                                                                                      :> (CanThrow
                                                                                                            OperationDenied
                                                                                                          :> (CanThrow
                                                                                                                'NotATeamMember
                                                                                                              :> (CanThrow
                                                                                                                    'TeamNotFound
                                                                                                                  :> ("teams"
                                                                                                                      :> (Capture
                                                                                                                            "tid"
                                                                                                                            TeamId
                                                                                                                          :> ("features"
                                                                                                                              :> ("validateSAMLemails"
                                                                                                                                  :> Get
                                                                                                                                       '[JSON]
                                                                                                                                       (LockableFeature
                                                                                                                                          ValidateSAMLEmailsConfig))))))))))
                                                                                               :<|> (Named
                                                                                                       '("iput",
                                                                                                         ValidateSAMLEmailsConfig)
                                                                                                       (Description
                                                                                                          ""
                                                                                                        :> (Summary
                                                                                                              "Put config for validateSAMLemails"
                                                                                                            :> (CanThrow
                                                                                                                  OperationDenied
                                                                                                                :> (CanThrow
                                                                                                                      'NotATeamMember
                                                                                                                    :> (CanThrow
                                                                                                                          'TeamNotFound
                                                                                                                        :> (CanThrow
                                                                                                                              TeamFeatureError
                                                                                                                            :> (CanThrowMany
                                                                                                                                  '[]
                                                                                                                                :> ("teams"
                                                                                                                                    :> (Capture
                                                                                                                                          "tid"
                                                                                                                                          TeamId
                                                                                                                                        :> ("features"
                                                                                                                                            :> ("validateSAMLemails"
                                                                                                                                                :> (ReqBody
                                                                                                                                                      '[JSON]
                                                                                                                                                      (Feature
                                                                                                                                                         ValidateSAMLEmailsConfig)
                                                                                                                                                    :> Put
                                                                                                                                                         '[JSON]
                                                                                                                                                         (LockableFeature
                                                                                                                                                            ValidateSAMLEmailsConfig)))))))))))))
                                                                                                     :<|> Named
                                                                                                            '("ipatch",
                                                                                                              ValidateSAMLEmailsConfig)
                                                                                                            (Description
                                                                                                               ""
                                                                                                             :> (Summary
                                                                                                                   "Patch config for validateSAMLemails"
                                                                                                                 :> (CanThrow
                                                                                                                       OperationDenied
                                                                                                                     :> (CanThrow
                                                                                                                           'NotATeamMember
                                                                                                                         :> (CanThrow
                                                                                                                               'TeamNotFound
                                                                                                                             :> (CanThrow
                                                                                                                                   TeamFeatureError
                                                                                                                                 :> (CanThrowMany
                                                                                                                                       '[]
                                                                                                                                     :> ("teams"
                                                                                                                                         :> (Capture
                                                                                                                                               "tid"
                                                                                                                                               TeamId
                                                                                                                                             :> ("features"
                                                                                                                                                 :> ("validateSAMLemails"
                                                                                                                                                     :> (ReqBody
                                                                                                                                                           '[JSON]
                                                                                                                                                           (LockableFeaturePatch
                                                                                                                                                              ValidateSAMLEmailsConfig)
                                                                                                                                                         :> Patch
                                                                                                                                                              '[JSON]
                                                                                                                                                              (LockableFeature
                                                                                                                                                                 ValidateSAMLEmailsConfig)))))))))))))))
                                                                                              :<|> ((Named
                                                                                                       '("iget",
                                                                                                         DigitalSignaturesConfig)
                                                                                                       (Description
                                                                                                          ""
                                                                                                        :> (Summary
                                                                                                              "Get config for digitalSignatures"
                                                                                                            :> (CanThrow
                                                                                                                  OperationDenied
                                                                                                                :> (CanThrow
                                                                                                                      'NotATeamMember
                                                                                                                    :> (CanThrow
                                                                                                                          'TeamNotFound
                                                                                                                        :> ("teams"
                                                                                                                            :> (Capture
                                                                                                                                  "tid"
                                                                                                                                  TeamId
                                                                                                                                :> ("features"
                                                                                                                                    :> ("digitalSignatures"
                                                                                                                                        :> Get
                                                                                                                                             '[JSON]
                                                                                                                                             (LockableFeature
                                                                                                                                                DigitalSignaturesConfig))))))))))
                                                                                                     :<|> (Named
                                                                                                             '("iput",
                                                                                                               DigitalSignaturesConfig)
                                                                                                             (Description
                                                                                                                ""
                                                                                                              :> (Summary
                                                                                                                    "Put config for digitalSignatures"
                                                                                                                  :> (CanThrow
                                                                                                                        OperationDenied
                                                                                                                      :> (CanThrow
                                                                                                                            'NotATeamMember
                                                                                                                          :> (CanThrow
                                                                                                                                'TeamNotFound
                                                                                                                              :> (CanThrow
                                                                                                                                    TeamFeatureError
                                                                                                                                  :> (CanThrowMany
                                                                                                                                        '[]
                                                                                                                                      :> ("teams"
                                                                                                                                          :> (Capture
                                                                                                                                                "tid"
                                                                                                                                                TeamId
                                                                                                                                              :> ("features"
                                                                                                                                                  :> ("digitalSignatures"
                                                                                                                                                      :> (ReqBody
                                                                                                                                                            '[JSON]
                                                                                                                                                            (Feature
                                                                                                                                                               DigitalSignaturesConfig)
                                                                                                                                                          :> Put
                                                                                                                                                               '[JSON]
                                                                                                                                                               (LockableFeature
                                                                                                                                                                  DigitalSignaturesConfig)))))))))))))
                                                                                                           :<|> Named
                                                                                                                  '("ipatch",
                                                                                                                    DigitalSignaturesConfig)
                                                                                                                  (Description
                                                                                                                     ""
                                                                                                                   :> (Summary
                                                                                                                         "Patch config for digitalSignatures"
                                                                                                                       :> (CanThrow
                                                                                                                             OperationDenied
                                                                                                                           :> (CanThrow
                                                                                                                                 'NotATeamMember
                                                                                                                               :> (CanThrow
                                                                                                                                     'TeamNotFound
                                                                                                                                   :> (CanThrow
                                                                                                                                         TeamFeatureError
                                                                                                                                       :> (CanThrowMany
                                                                                                                                             '[]
                                                                                                                                           :> ("teams"
                                                                                                                                               :> (Capture
                                                                                                                                                     "tid"
                                                                                                                                                     TeamId
                                                                                                                                                   :> ("features"
                                                                                                                                                       :> ("digitalSignatures"
                                                                                                                                                           :> (ReqBody
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 (LockableFeaturePatch
                                                                                                                                                                    DigitalSignaturesConfig)
                                                                                                                                                               :> Patch
                                                                                                                                                                    '[JSON]
                                                                                                                                                                    (LockableFeature
                                                                                                                                                                       DigitalSignaturesConfig)))))))))))))))
                                                                                                    :<|> ((Named
                                                                                                             '("iget",
                                                                                                               AppLockConfig)
                                                                                                             (Description
                                                                                                                ""
                                                                                                              :> (Summary
                                                                                                                    "Get config for appLock"
                                                                                                                  :> (CanThrow
                                                                                                                        OperationDenied
                                                                                                                      :> (CanThrow
                                                                                                                            'NotATeamMember
                                                                                                                          :> (CanThrow
                                                                                                                                'TeamNotFound
                                                                                                                              :> ("teams"
                                                                                                                                  :> (Capture
                                                                                                                                        "tid"
                                                                                                                                        TeamId
                                                                                                                                      :> ("features"
                                                                                                                                          :> ("appLock"
                                                                                                                                              :> Get
                                                                                                                                                   '[JSON]
                                                                                                                                                   (LockableFeature
                                                                                                                                                      AppLockConfig))))))))))
                                                                                                           :<|> (Named
                                                                                                                   '("iput",
                                                                                                                     AppLockConfig)
                                                                                                                   (Description
                                                                                                                      ""
                                                                                                                    :> (Summary
                                                                                                                          "Put config for appLock"
                                                                                                                        :> (CanThrow
                                                                                                                              OperationDenied
                                                                                                                            :> (CanThrow
                                                                                                                                  'NotATeamMember
                                                                                                                                :> (CanThrow
                                                                                                                                      'TeamNotFound
                                                                                                                                    :> (CanThrow
                                                                                                                                          TeamFeatureError
                                                                                                                                        :> (CanThrowMany
                                                                                                                                              '[]
                                                                                                                                            :> ("teams"
                                                                                                                                                :> (Capture
                                                                                                                                                      "tid"
                                                                                                                                                      TeamId
                                                                                                                                                    :> ("features"
                                                                                                                                                        :> ("appLock"
                                                                                                                                                            :> (ReqBody
                                                                                                                                                                  '[JSON]
                                                                                                                                                                  (Feature
                                                                                                                                                                     AppLockConfig)
                                                                                                                                                                :> Put
                                                                                                                                                                     '[JSON]
                                                                                                                                                                     (LockableFeature
                                                                                                                                                                        AppLockConfig)))))))))))))
                                                                                                                 :<|> Named
                                                                                                                        '("ipatch",
                                                                                                                          AppLockConfig)
                                                                                                                        (Description
                                                                                                                           ""
                                                                                                                         :> (Summary
                                                                                                                               "Patch config for appLock"
                                                                                                                             :> (CanThrow
                                                                                                                                   OperationDenied
                                                                                                                                 :> (CanThrow
                                                                                                                                       'NotATeamMember
                                                                                                                                     :> (CanThrow
                                                                                                                                           'TeamNotFound
                                                                                                                                         :> (CanThrow
                                                                                                                                               TeamFeatureError
                                                                                                                                             :> (CanThrowMany
                                                                                                                                                   '[]
                                                                                                                                                 :> ("teams"
                                                                                                                                                     :> (Capture
                                                                                                                                                           "tid"
                                                                                                                                                           TeamId
                                                                                                                                                         :> ("features"
                                                                                                                                                             :> ("appLock"
                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                       '[JSON]
                                                                                                                                                                       (LockableFeaturePatch
                                                                                                                                                                          AppLockConfig)
                                                                                                                                                                     :> Patch
                                                                                                                                                                          '[JSON]
                                                                                                                                                                          (LockableFeature
                                                                                                                                                                             AppLockConfig)))))))))))))))
                                                                                                          :<|> ((Named
                                                                                                                   '("iget",
                                                                                                                     FileSharingConfig)
                                                                                                                   (Description
                                                                                                                      ""
                                                                                                                    :> (Summary
                                                                                                                          "Get config for fileSharing"
                                                                                                                        :> (CanThrow
                                                                                                                              OperationDenied
                                                                                                                            :> (CanThrow
                                                                                                                                  'NotATeamMember
                                                                                                                                :> (CanThrow
                                                                                                                                      'TeamNotFound
                                                                                                                                    :> ("teams"
                                                                                                                                        :> (Capture
                                                                                                                                              "tid"
                                                                                                                                              TeamId
                                                                                                                                            :> ("features"
                                                                                                                                                :> ("fileSharing"
                                                                                                                                                    :> Get
                                                                                                                                                         '[JSON]
                                                                                                                                                         (LockableFeature
                                                                                                                                                            FileSharingConfig))))))))))
                                                                                                                 :<|> (Named
                                                                                                                         '("iput",
                                                                                                                           FileSharingConfig)
                                                                                                                         (Description
                                                                                                                            ""
                                                                                                                          :> (Summary
                                                                                                                                "Put config for fileSharing"
                                                                                                                              :> (CanThrow
                                                                                                                                    OperationDenied
                                                                                                                                  :> (CanThrow
                                                                                                                                        'NotATeamMember
                                                                                                                                      :> (CanThrow
                                                                                                                                            'TeamNotFound
                                                                                                                                          :> (CanThrow
                                                                                                                                                TeamFeatureError
                                                                                                                                              :> (CanThrowMany
                                                                                                                                                    '[]
                                                                                                                                                  :> ("teams"
                                                                                                                                                      :> (Capture
                                                                                                                                                            "tid"
                                                                                                                                                            TeamId
                                                                                                                                                          :> ("features"
                                                                                                                                                              :> ("fileSharing"
                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                        '[JSON]
                                                                                                                                                                        (Feature
                                                                                                                                                                           FileSharingConfig)
                                                                                                                                                                      :> Put
                                                                                                                                                                           '[JSON]
                                                                                                                                                                           (LockableFeature
                                                                                                                                                                              FileSharingConfig)))))))))))))
                                                                                                                       :<|> Named
                                                                                                                              '("ipatch",
                                                                                                                                FileSharingConfig)
                                                                                                                              (Description
                                                                                                                                 ""
                                                                                                                               :> (Summary
                                                                                                                                     "Patch config for fileSharing"
                                                                                                                                   :> (CanThrow
                                                                                                                                         OperationDenied
                                                                                                                                       :> (CanThrow
                                                                                                                                             'NotATeamMember
                                                                                                                                           :> (CanThrow
                                                                                                                                                 'TeamNotFound
                                                                                                                                               :> (CanThrow
                                                                                                                                                     TeamFeatureError
                                                                                                                                                   :> (CanThrowMany
                                                                                                                                                         '[]
                                                                                                                                                       :> ("teams"
                                                                                                                                                           :> (Capture
                                                                                                                                                                 "tid"
                                                                                                                                                                 TeamId
                                                                                                                                                               :> ("features"
                                                                                                                                                                   :> ("fileSharing"
                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                             '[JSON]
                                                                                                                                                                             (LockableFeaturePatch
                                                                                                                                                                                FileSharingConfig)
                                                                                                                                                                           :> Patch
                                                                                                                                                                                '[JSON]
                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                   FileSharingConfig)))))))))))))))
                                                                                                                :<|> (Named
                                                                                                                        '("iget",
                                                                                                                          ClassifiedDomainsConfig)
                                                                                                                        (Description
                                                                                                                           ""
                                                                                                                         :> (Summary
                                                                                                                               "Get config for classifiedDomains"
                                                                                                                             :> (CanThrow
                                                                                                                                   OperationDenied
                                                                                                                                 :> (CanThrow
                                                                                                                                       'NotATeamMember
                                                                                                                                     :> (CanThrow
                                                                                                                                           'TeamNotFound
                                                                                                                                         :> ("teams"
                                                                                                                                             :> (Capture
                                                                                                                                                   "tid"
                                                                                                                                                   TeamId
                                                                                                                                                 :> ("features"
                                                                                                                                                     :> ("classifiedDomains"
                                                                                                                                                         :> Get
                                                                                                                                                              '[JSON]
                                                                                                                                                              (LockableFeature
                                                                                                                                                                 ClassifiedDomainsConfig))))))))))
                                                                                                                      :<|> ((Named
                                                                                                                               '("iget",
                                                                                                                                 ConferenceCallingConfig)
                                                                                                                               (Description
                                                                                                                                  ""
                                                                                                                                :> (Summary
                                                                                                                                      "Get config for conferenceCalling"
                                                                                                                                    :> (CanThrow
                                                                                                                                          OperationDenied
                                                                                                                                        :> (CanThrow
                                                                                                                                              'NotATeamMember
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'TeamNotFound
                                                                                                                                                :> ("teams"
                                                                                                                                                    :> (Capture
                                                                                                                                                          "tid"
                                                                                                                                                          TeamId
                                                                                                                                                        :> ("features"
                                                                                                                                                            :> ("conferenceCalling"
                                                                                                                                                                :> Get
                                                                                                                                                                     '[JSON]
                                                                                                                                                                     (LockableFeature
                                                                                                                                                                        ConferenceCallingConfig))))))))))
                                                                                                                             :<|> (Named
                                                                                                                                     '("iput",
                                                                                                                                       ConferenceCallingConfig)
                                                                                                                                     (Description
                                                                                                                                        ""
                                                                                                                                      :> (Summary
                                                                                                                                            "Put config for conferenceCalling"
                                                                                                                                          :> (CanThrow
                                                                                                                                                OperationDenied
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'NotATeamMember
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'TeamNotFound
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            TeamFeatureError
                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                '[]
                                                                                                                                                              :> ("teams"
                                                                                                                                                                  :> (Capture
                                                                                                                                                                        "tid"
                                                                                                                                                                        TeamId
                                                                                                                                                                      :> ("features"
                                                                                                                                                                          :> ("conferenceCalling"
                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                    (Feature
                                                                                                                                                                                       ConferenceCallingConfig)
                                                                                                                                                                                  :> Put
                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                          ConferenceCallingConfig)))))))))))))
                                                                                                                                   :<|> Named
                                                                                                                                          '("ipatch",
                                                                                                                                            ConferenceCallingConfig)
                                                                                                                                          (Description
                                                                                                                                             ""
                                                                                                                                           :> (Summary
                                                                                                                                                 "Patch config for conferenceCalling"
                                                                                                                                               :> (CanThrow
                                                                                                                                                     OperationDenied
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'NotATeamMember
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'TeamNotFound
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 TeamFeatureError
                                                                                                                                                               :> (CanThrowMany
                                                                                                                                                                     '[]
                                                                                                                                                                   :> ("teams"
                                                                                                                                                                       :> (Capture
                                                                                                                                                                             "tid"
                                                                                                                                                                             TeamId
                                                                                                                                                                           :> ("features"
                                                                                                                                                                               :> ("conferenceCalling"
                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                         (LockableFeaturePatch
                                                                                                                                                                                            ConferenceCallingConfig)
                                                                                                                                                                                       :> Patch
                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                               ConferenceCallingConfig)))))))))))))))
                                                                                                                            :<|> ((Named
                                                                                                                                     '("iget",
                                                                                                                                       SelfDeletingMessagesConfig)
                                                                                                                                     (Description
                                                                                                                                        ""
                                                                                                                                      :> (Summary
                                                                                                                                            "Get config for selfDeletingMessages"
                                                                                                                                          :> (CanThrow
                                                                                                                                                OperationDenied
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'NotATeamMember
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'TeamNotFound
                                                                                                                                                      :> ("teams"
                                                                                                                                                          :> (Capture
                                                                                                                                                                "tid"
                                                                                                                                                                TeamId
                                                                                                                                                              :> ("features"
                                                                                                                                                                  :> ("selfDeletingMessages"
                                                                                                                                                                      :> Get
                                                                                                                                                                           '[JSON]
                                                                                                                                                                           (LockableFeature
                                                                                                                                                                              SelfDeletingMessagesConfig))))))))))
                                                                                                                                   :<|> (Named
                                                                                                                                           '("iput",
                                                                                                                                             SelfDeletingMessagesConfig)
                                                                                                                                           (Description
                                                                                                                                              ""
                                                                                                                                            :> (Summary
                                                                                                                                                  "Put config for selfDeletingMessages"
                                                                                                                                                :> (CanThrow
                                                                                                                                                      OperationDenied
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'NotATeamMember
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'TeamNotFound
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  TeamFeatureError
                                                                                                                                                                :> (CanThrowMany
                                                                                                                                                                      '[]
                                                                                                                                                                    :> ("teams"
                                                                                                                                                                        :> (Capture
                                                                                                                                                                              "tid"
                                                                                                                                                                              TeamId
                                                                                                                                                                            :> ("features"
                                                                                                                                                                                :> ("selfDeletingMessages"
                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                          (Feature
                                                                                                                                                                                             SelfDeletingMessagesConfig)
                                                                                                                                                                                        :> Put
                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                SelfDeletingMessagesConfig)))))))))))))
                                                                                                                                         :<|> Named
                                                                                                                                                '("ipatch",
                                                                                                                                                  SelfDeletingMessagesConfig)
                                                                                                                                                (Description
                                                                                                                                                   ""
                                                                                                                                                 :> (Summary
                                                                                                                                                       "Patch config for selfDeletingMessages"
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           OperationDenied
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'NotATeamMember
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       TeamFeatureError
                                                                                                                                                                     :> (CanThrowMany
                                                                                                                                                                           '[]
                                                                                                                                                                         :> ("teams"
                                                                                                                                                                             :> (Capture
                                                                                                                                                                                   "tid"
                                                                                                                                                                                   TeamId
                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                     :> ("selfDeletingMessages"
                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                               (LockableFeaturePatch
                                                                                                                                                                                                  SelfDeletingMessagesConfig)
                                                                                                                                                                                             :> Patch
                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                     SelfDeletingMessagesConfig)))))))))))))))
                                                                                                                                  :<|> ((Named
                                                                                                                                           '("iget",
                                                                                                                                             GuestLinksConfig)
                                                                                                                                           (Description
                                                                                                                                              ""
                                                                                                                                            :> (Summary
                                                                                                                                                  "Get config for conversationGuestLinks"
                                                                                                                                                :> (CanThrow
                                                                                                                                                      OperationDenied
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'NotATeamMember
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'TeamNotFound
                                                                                                                                                            :> ("teams"
                                                                                                                                                                :> (Capture
                                                                                                                                                                      "tid"
                                                                                                                                                                      TeamId
                                                                                                                                                                    :> ("features"
                                                                                                                                                                        :> ("conversationGuestLinks"
                                                                                                                                                                            :> Get
                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                    GuestLinksConfig))))))))))
                                                                                                                                         :<|> (Named
                                                                                                                                                 '("iput",
                                                                                                                                                   GuestLinksConfig)
                                                                                                                                                 (Description
                                                                                                                                                    ""
                                                                                                                                                  :> (Summary
                                                                                                                                                        "Put config for conversationGuestLinks"
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            OperationDenied
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'NotATeamMember
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                            '[]
                                                                                                                                                                          :> ("teams"
                                                                                                                                                                              :> (Capture
                                                                                                                                                                                    "tid"
                                                                                                                                                                                    TeamId
                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                      :> ("conversationGuestLinks"
                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                (Feature
                                                                                                                                                                                                   GuestLinksConfig)
                                                                                                                                                                                              :> Put
                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                      GuestLinksConfig)))))))))))))
                                                                                                                                               :<|> Named
                                                                                                                                                      '("ipatch",
                                                                                                                                                        GuestLinksConfig)
                                                                                                                                                      (Description
                                                                                                                                                         ""
                                                                                                                                                       :> (Summary
                                                                                                                                                             "Patch config for conversationGuestLinks"
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 OperationDenied
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             TeamFeatureError
                                                                                                                                                                           :> (CanThrowMany
                                                                                                                                                                                 '[]
                                                                                                                                                                               :> ("teams"
                                                                                                                                                                                   :> (Capture
                                                                                                                                                                                         "tid"
                                                                                                                                                                                         TeamId
                                                                                                                                                                                       :> ("features"
                                                                                                                                                                                           :> ("conversationGuestLinks"
                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                     (LockableFeaturePatch
                                                                                                                                                                                                        GuestLinksConfig)
                                                                                                                                                                                                   :> Patch
                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                           GuestLinksConfig)))))))))))))))
                                                                                                                                        :<|> ((Named
                                                                                                                                                 '("iget",
                                                                                                                                                   SndFactorPasswordChallengeConfig)
                                                                                                                                                 (Description
                                                                                                                                                    ""
                                                                                                                                                  :> (Summary
                                                                                                                                                        "Get config for sndFactorPasswordChallenge"
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            OperationDenied
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'NotATeamMember
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                  :> ("teams"
                                                                                                                                                                      :> (Capture
                                                                                                                                                                            "tid"
                                                                                                                                                                            TeamId
                                                                                                                                                                          :> ("features"
                                                                                                                                                                              :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                  :> Get
                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                          SndFactorPasswordChallengeConfig))))))))))
                                                                                                                                               :<|> (Named
                                                                                                                                                       '("iput",
                                                                                                                                                         SndFactorPasswordChallengeConfig)
                                                                                                                                                       (Description
                                                                                                                                                          ""
                                                                                                                                                        :> (Summary
                                                                                                                                                              "Put config for sndFactorPasswordChallenge"
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  OperationDenied
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              TeamFeatureError
                                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                                  '[]
                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                          "tid"
                                                                                                                                                                                          TeamId
                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                            :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                      (Feature
                                                                                                                                                                                                         SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                    :> Put
                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                            SndFactorPasswordChallengeConfig)))))))))))))
                                                                                                                                                     :<|> Named
                                                                                                                                                            '("ipatch",
                                                                                                                                                              SndFactorPasswordChallengeConfig)
                                                                                                                                                            (Description
                                                                                                                                                               ""
                                                                                                                                                             :> (Summary
                                                                                                                                                                   "Patch config for sndFactorPasswordChallenge"
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       OperationDenied
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   TeamFeatureError
                                                                                                                                                                                 :> (CanThrowMany
                                                                                                                                                                                       '[]
                                                                                                                                                                                     :> ("teams"
                                                                                                                                                                                         :> (Capture
                                                                                                                                                                                               "tid"
                                                                                                                                                                                               TeamId
                                                                                                                                                                                             :> ("features"
                                                                                                                                                                                                 :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           (LockableFeaturePatch
                                                                                                                                                                                                              SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                         :> Patch
                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                 SndFactorPasswordChallengeConfig)))))))))))))))
                                                                                                                                              :<|> ((Named
                                                                                                                                                       '("iget",
                                                                                                                                                         MLSConfig)
                                                                                                                                                       (Description
                                                                                                                                                          ""
                                                                                                                                                        :> (Summary
                                                                                                                                                              "Get config for mls"
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  OperationDenied
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                        :> ("teams"
                                                                                                                                                                            :> (Capture
                                                                                                                                                                                  "tid"
                                                                                                                                                                                  TeamId
                                                                                                                                                                                :> ("features"
                                                                                                                                                                                    :> ("mls"
                                                                                                                                                                                        :> Get
                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                MLSConfig))))))))))
                                                                                                                                                     :<|> (Named
                                                                                                                                                             '("iput",
                                                                                                                                                               MLSConfig)
                                                                                                                                                             (Description
                                                                                                                                                                ""
                                                                                                                                                              :> (Summary
                                                                                                                                                                    "Put config for mls"
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        OperationDenied
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    TeamFeatureError
                                                                                                                                                                                  :> (CanThrowMany
                                                                                                                                                                                        '[]
                                                                                                                                                                                      :> ("teams"
                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                "tid"
                                                                                                                                                                                                TeamId
                                                                                                                                                                                              :> ("features"
                                                                                                                                                                                                  :> ("mls"
                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                            (Feature
                                                                                                                                                                                                               MLSConfig)
                                                                                                                                                                                                          :> Put
                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                  MLSConfig)))))))))))))
                                                                                                                                                           :<|> Named
                                                                                                                                                                  '("ipatch",
                                                                                                                                                                    MLSConfig)
                                                                                                                                                                  (Description
                                                                                                                                                                     ""
                                                                                                                                                                   :> (Summary
                                                                                                                                                                         "Patch config for mls"
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             OperationDenied
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         TeamFeatureError
                                                                                                                                                                                       :> (CanThrowMany
                                                                                                                                                                                             '[]
                                                                                                                                                                                           :> ("teams"
                                                                                                                                                                                               :> (Capture
                                                                                                                                                                                                     "tid"
                                                                                                                                                                                                     TeamId
                                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                                       :> ("mls"
                                                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                 (LockableFeaturePatch
                                                                                                                                                                                                                    MLSConfig)
                                                                                                                                                                                                               :> Patch
                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                       MLSConfig)))))))))))))))
                                                                                                                                                    :<|> ((Named
                                                                                                                                                             '("iget",
                                                                                                                                                               ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                             (Description
                                                                                                                                                                ""
                                                                                                                                                              :> (Summary
                                                                                                                                                                    "Get config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        OperationDenied
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                        "tid"
                                                                                                                                                                                        TeamId
                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                          :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                              :> Get
                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                      ExposeInvitationURLsToTeamAdminConfig))))))))))
                                                                                                                                                           :<|> (Named
                                                                                                                                                                   '("iput",
                                                                                                                                                                     ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                   (Description
                                                                                                                                                                      ""
                                                                                                                                                                    :> (Summary
                                                                                                                                                                          "Put config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              OperationDenied
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          TeamFeatureError
                                                                                                                                                                                        :> (CanThrowMany
                                                                                                                                                                                              '[]
                                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                      "tid"
                                                                                                                                                                                                      TeamId
                                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                                        :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                  (Feature
                                                                                                                                                                                                                     ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                                                :> Put
                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                        ExposeInvitationURLsToTeamAdminConfig)))))))))))))
                                                                                                                                                                 :<|> Named
                                                                                                                                                                        '("ipatch",
                                                                                                                                                                          ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                        (Description
                                                                                                                                                                           ""
                                                                                                                                                                         :> (Summary
                                                                                                                                                                               "Patch config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   OperationDenied
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               TeamFeatureError
                                                                                                                                                                                             :> (CanThrowMany
                                                                                                                                                                                                   '[]
                                                                                                                                                                                                 :> ("teams"
                                                                                                                                                                                                     :> (Capture
                                                                                                                                                                                                           "tid"
                                                                                                                                                                                                           TeamId
                                                                                                                                                                                                         :> ("features"
                                                                                                                                                                                                             :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                       (LockableFeaturePatch
                                                                                                                                                                                                                          ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                                                     :> Patch
                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                                             ExposeInvitationURLsToTeamAdminConfig)))))))))))))))
                                                                                                                                                          :<|> ((Named
                                                                                                                                                                   '("iget",
                                                                                                                                                                     OutlookCalIntegrationConfig)
                                                                                                                                                                   (Description
                                                                                                                                                                      ""
                                                                                                                                                                    :> (Summary
                                                                                                                                                                          "Get config for outlookCalIntegration"
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              OperationDenied
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                    :> ("teams"
                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                              "tid"
                                                                                                                                                                                              TeamId
                                                                                                                                                                                            :> ("features"
                                                                                                                                                                                                :> ("outlookCalIntegration"
                                                                                                                                                                                                    :> Get
                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                            OutlookCalIntegrationConfig))))))))))
                                                                                                                                                                 :<|> (Named
                                                                                                                                                                         '("iput",
                                                                                                                                                                           OutlookCalIntegrationConfig)
                                                                                                                                                                         (Description
                                                                                                                                                                            ""
                                                                                                                                                                          :> (Summary
                                                                                                                                                                                "Put config for outlookCalIntegration"
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                TeamFeatureError
                                                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                                                    '[]
                                                                                                                                                                                                  :> ("teams"
                                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                                            "tid"
                                                                                                                                                                                                            TeamId
                                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                                              :> ("outlookCalIntegration"
                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                        (Feature
                                                                                                                                                                                                                           OutlookCalIntegrationConfig)
                                                                                                                                                                                                                      :> Put
                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                              OutlookCalIntegrationConfig)))))))))))))
                                                                                                                                                                       :<|> Named
                                                                                                                                                                              '("ipatch",
                                                                                                                                                                                OutlookCalIntegrationConfig)
                                                                                                                                                                              (Description
                                                                                                                                                                                 ""
                                                                                                                                                                               :> (Summary
                                                                                                                                                                                     "Patch config for outlookCalIntegration"
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     TeamFeatureError
                                                                                                                                                                                                   :> (CanThrowMany
                                                                                                                                                                                                         '[]
                                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                                 TeamId
                                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                                   :> ("outlookCalIntegration"
                                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                             (LockableFeaturePatch
                                                                                                                                                                                                                                OutlookCalIntegrationConfig)
                                                                                                                                                                                                                           :> Patch
                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                   OutlookCalIntegrationConfig)))))))))))))))
                                                                                                                                                                :<|> ((Named
                                                                                                                                                                         '("iget",
                                                                                                                                                                           MlsE2EIdConfig)
                                                                                                                                                                         (Description
                                                                                                                                                                            ""
                                                                                                                                                                          :> (Summary
                                                                                                                                                                                "Get config for mlsE2EId"
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                      :> ("mlsE2EId"
                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                  MlsE2EIdConfig))))))))))
                                                                                                                                                                       :<|> (Named
                                                                                                                                                                               '("iput",
                                                                                                                                                                                 MlsE2EIdConfig)
                                                                                                                                                                               (Description
                                                                                                                                                                                  ""
                                                                                                                                                                                :> (Summary
                                                                                                                                                                                      "Put config for mlsE2EId"
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          OperationDenied
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      TeamFeatureError
                                                                                                                                                                                                    :> (CanThrowMany
                                                                                                                                                                                                          '[]
                                                                                                                                                                                                        :> ("teams"
                                                                                                                                                                                                            :> (Capture
                                                                                                                                                                                                                  "tid"
                                                                                                                                                                                                                  TeamId
                                                                                                                                                                                                                :> ("features"
                                                                                                                                                                                                                    :> ("mlsE2EId"
                                                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                              (Feature
                                                                                                                                                                                                                                 MlsE2EIdConfig)
                                                                                                                                                                                                                            :> Put
                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                                    MlsE2EIdConfig)))))))))))))
                                                                                                                                                                             :<|> Named
                                                                                                                                                                                    '("ipatch",
                                                                                                                                                                                      MlsE2EIdConfig)
                                                                                                                                                                                    (Description
                                                                                                                                                                                       ""
                                                                                                                                                                                     :> (Summary
                                                                                                                                                                                           "Patch config for mlsE2EId"
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           TeamFeatureError
                                                                                                                                                                                                         :> (CanThrowMany
                                                                                                                                                                                                               '[]
                                                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                                       "tid"
                                                                                                                                                                                                                       TeamId
                                                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                                                         :> ("mlsE2EId"
                                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                   (LockableFeaturePatch
                                                                                                                                                                                                                                      MlsE2EIdConfig)
                                                                                                                                                                                                                                 :> Patch
                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                                         MlsE2EIdConfig)))))))))))))))
                                                                                                                                                                      :<|> ((Named
                                                                                                                                                                               '("iget",
                                                                                                                                                                                 MlsMigrationConfig)
                                                                                                                                                                               (Description
                                                                                                                                                                                  ""
                                                                                                                                                                                :> (Summary
                                                                                                                                                                                      "Get config for mlsMigration"
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          OperationDenied
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                          "tid"
                                                                                                                                                                                                          TeamId
                                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                                            :> ("mlsMigration"
                                                                                                                                                                                                                :> Get
                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                        MlsMigrationConfig))))))))))
                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                     '("iput",
                                                                                                                                                                                       MlsMigrationConfig)
                                                                                                                                                                                     (Description
                                                                                                                                                                                        ""
                                                                                                                                                                                      :> (Summary
                                                                                                                                                                                            "Put config for mlsMigration"
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            TeamFeatureError
                                                                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                                                                '[]
                                                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                                        "tid"
                                                                                                                                                                                                                        TeamId
                                                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                                                          :> ("mlsMigration"
                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                    (Feature
                                                                                                                                                                                                                                       MlsMigrationConfig)
                                                                                                                                                                                                                                  :> Put
                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                                          MlsMigrationConfig)))))))))))))
                                                                                                                                                                                   :<|> Named
                                                                                                                                                                                          '("ipatch",
                                                                                                                                                                                            MlsMigrationConfig)
                                                                                                                                                                                          (Description
                                                                                                                                                                                             ""
                                                                                                                                                                                           :> (Summary
                                                                                                                                                                                                 "Patch config for mlsMigration"
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                 TeamFeatureError
                                                                                                                                                                                                               :> (CanThrowMany
                                                                                                                                                                                                                     '[]
                                                                                                                                                                                                                   :> ("teams"
                                                                                                                                                                                                                       :> (Capture
                                                                                                                                                                                                                             "tid"
                                                                                                                                                                                                                             TeamId
                                                                                                                                                                                                                           :> ("features"
                                                                                                                                                                                                                               :> ("mlsMigration"
                                                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                         (LockableFeaturePatch
                                                                                                                                                                                                                                            MlsMigrationConfig)
                                                                                                                                                                                                                                       :> Patch
                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                                               MlsMigrationConfig)))))))))))))))
                                                                                                                                                                            :<|> ((Named
                                                                                                                                                                                     '("iget",
                                                                                                                                                                                       EnforceFileDownloadLocationConfig)
                                                                                                                                                                                     (Description
                                                                                                                                                                                        "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                      :> (Summary
                                                                                                                                                                                            "Get config for enforceFileDownloadLocation"
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                      :> ("teams"
                                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                                "tid"
                                                                                                                                                                                                                TeamId
                                                                                                                                                                                                              :> ("features"
                                                                                                                                                                                                                  :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                      :> Get
                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                              EnforceFileDownloadLocationConfig))))))))))
                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                           '("iput",
                                                                                                                                                                                             EnforceFileDownloadLocationConfig)
                                                                                                                                                                                           (Description
                                                                                                                                                                                              "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                            :> (Summary
                                                                                                                                                                                                  "Put config for enforceFileDownloadLocation"
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                  TeamFeatureError
                                                                                                                                                                                                                :> (CanThrowMany
                                                                                                                                                                                                                      '[]
                                                                                                                                                                                                                    :> ("teams"
                                                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                                                              "tid"
                                                                                                                                                                                                                              TeamId
                                                                                                                                                                                                                            :> ("features"
                                                                                                                                                                                                                                :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                          (Feature
                                                                                                                                                                                                                                             EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                        :> Put
                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                                EnforceFileDownloadLocationConfig)))))))))))))
                                                                                                                                                                                         :<|> Named
                                                                                                                                                                                                '("ipatch",
                                                                                                                                                                                                  EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                (Description
                                                                                                                                                                                                   "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                                 :> (Summary
                                                                                                                                                                                                       "Patch config for enforceFileDownloadLocation"
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           OperationDenied
                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                       TeamFeatureError
                                                                                                                                                                                                                     :> (CanThrowMany
                                                                                                                                                                                                                           '[]
                                                                                                                                                                                                                         :> ("teams"
                                                                                                                                                                                                                             :> (Capture
                                                                                                                                                                                                                                   "tid"
                                                                                                                                                                                                                                   TeamId
                                                                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                                                                     :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                               (LockableFeaturePatch
                                                                                                                                                                                                                                                  EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                             :> Patch
                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                                     EnforceFileDownloadLocationConfig)))))))))))))))
                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                          '("iget",
                                                                                                                                                                                            LimitedEventFanoutConfig)
                                                                                                                                                                                          (Description
                                                                                                                                                                                             ""
                                                                                                                                                                                           :> (Summary
                                                                                                                                                                                                 "Get config for limitedEventFanout"
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                                           :> ("teams"
                                                                                                                                                                                                               :> (Capture
                                                                                                                                                                                                                     "tid"
                                                                                                                                                                                                                     TeamId
                                                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                                                       :> ("limitedEventFanout"
                                                                                                                                                                                                                           :> Get
                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                   LimitedEventFanoutConfig))))))))))
                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                '("iput",
                                                                                                                                                                                                  LimitedEventFanoutConfig)
                                                                                                                                                                                                (Description
                                                                                                                                                                                                   ""
                                                                                                                                                                                                 :> (Summary
                                                                                                                                                                                                       "Put config for limitedEventFanout"
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           OperationDenied
                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                       TeamFeatureError
                                                                                                                                                                                                                     :> (CanThrowMany
                                                                                                                                                                                                                           '[]
                                                                                                                                                                                                                         :> ("teams"
                                                                                                                                                                                                                             :> (Capture
                                                                                                                                                                                                                                   "tid"
                                                                                                                                                                                                                                   TeamId
                                                                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                                                                     :> ("limitedEventFanout"
                                                                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                               (Feature
                                                                                                                                                                                                                                                  LimitedEventFanoutConfig)
                                                                                                                                                                                                                                             :> Put
                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                                     LimitedEventFanoutConfig)))))))))))))
                                                                                                                                                                                              :<|> Named
                                                                                                                                                                                                     '("ipatch",
                                                                                                                                                                                                       LimitedEventFanoutConfig)
                                                                                                                                                                                                     (Description
                                                                                                                                                                                                        ""
                                                                                                                                                                                                      :> (Summary
                                                                                                                                                                                                            "Patch config for limitedEventFanout"
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            TeamFeatureError
                                                                                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                                                                                '[]
                                                                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                                                        "tid"
                                                                                                                                                                                                                                        TeamId
                                                                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                                                                          :> ("limitedEventFanout"
                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                    (LockableFeaturePatch
                                                                                                                                                                                                                                                       LimitedEventFanoutConfig)
                                                                                                                                                                                                                                                  :> Patch
                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                                                          LimitedEventFanoutConfig))))))))))))))))))))))))))))))))))
                                                                     :<|> (Named
                                                                             '("ilock",
                                                                               FileSharingConfig)
                                                                             (Summary
                                                                                "(Un-)lock fileSharing"
                                                                              :> (Description ""
                                                                                  :> (CanThrow
                                                                                        'NotATeamMember
                                                                                      :> (CanThrow
                                                                                            'TeamNotFound
                                                                                          :> ("teams"
                                                                                              :> (Capture
                                                                                                    "tid"
                                                                                                    TeamId
                                                                                                  :> ("features"
                                                                                                      :> ("fileSharing"
                                                                                                          :> (Capture
                                                                                                                "lockStatus"
                                                                                                                LockStatus
                                                                                                              :> Put
                                                                                                                   '[JSON]
                                                                                                                   LockStatusResponse)))))))))
                                                                           :<|> (Named
                                                                                   '("ilock",
                                                                                     ConferenceCallingConfig)
                                                                                   (Summary
                                                                                      "(Un-)lock conferenceCalling"
                                                                                    :> (Description
                                                                                          ""
                                                                                        :> (CanThrow
                                                                                              'NotATeamMember
                                                                                            :> (CanThrow
                                                                                                  'TeamNotFound
                                                                                                :> ("teams"
                                                                                                    :> (Capture
                                                                                                          "tid"
                                                                                                          TeamId
                                                                                                        :> ("features"
                                                                                                            :> ("conferenceCalling"
                                                                                                                :> (Capture
                                                                                                                      "lockStatus"
                                                                                                                      LockStatus
                                                                                                                    :> Put
                                                                                                                         '[JSON]
                                                                                                                         LockStatusResponse)))))))))
                                                                                 :<|> (Named
                                                                                         '("ilock",
                                                                                           SelfDeletingMessagesConfig)
                                                                                         (Summary
                                                                                            "(Un-)lock selfDeletingMessages"
                                                                                          :> (Description
                                                                                                ""
                                                                                              :> (CanThrow
                                                                                                    'NotATeamMember
                                                                                                  :> (CanThrow
                                                                                                        'TeamNotFound
                                                                                                      :> ("teams"
                                                                                                          :> (Capture
                                                                                                                "tid"
                                                                                                                TeamId
                                                                                                              :> ("features"
                                                                                                                  :> ("selfDeletingMessages"
                                                                                                                      :> (Capture
                                                                                                                            "lockStatus"
                                                                                                                            LockStatus
                                                                                                                          :> Put
                                                                                                                               '[JSON]
                                                                                                                               LockStatusResponse)))))))))
                                                                                       :<|> (Named
                                                                                               '("ilock",
                                                                                                 GuestLinksConfig)
                                                                                               (Summary
                                                                                                  "(Un-)lock conversationGuestLinks"
                                                                                                :> (Description
                                                                                                      ""
                                                                                                    :> (CanThrow
                                                                                                          'NotATeamMember
                                                                                                        :> (CanThrow
                                                                                                              'TeamNotFound
                                                                                                            :> ("teams"
                                                                                                                :> (Capture
                                                                                                                      "tid"
                                                                                                                      TeamId
                                                                                                                    :> ("features"
                                                                                                                        :> ("conversationGuestLinks"
                                                                                                                            :> (Capture
                                                                                                                                  "lockStatus"
                                                                                                                                  LockStatus
                                                                                                                                :> Put
                                                                                                                                     '[JSON]
                                                                                                                                     LockStatusResponse)))))))))
                                                                                             :<|> (Named
                                                                                                     '("ilock",
                                                                                                       SndFactorPasswordChallengeConfig)
                                                                                                     (Summary
                                                                                                        "(Un-)lock sndFactorPasswordChallenge"
                                                                                                      :> (Description
                                                                                                            ""
                                                                                                          :> (CanThrow
                                                                                                                'NotATeamMember
                                                                                                              :> (CanThrow
                                                                                                                    'TeamNotFound
                                                                                                                  :> ("teams"
                                                                                                                      :> (Capture
                                                                                                                            "tid"
                                                                                                                            TeamId
                                                                                                                          :> ("features"
                                                                                                                              :> ("sndFactorPasswordChallenge"
                                                                                                                                  :> (Capture
                                                                                                                                        "lockStatus"
                                                                                                                                        LockStatus
                                                                                                                                      :> Put
                                                                                                                                           '[JSON]
                                                                                                                                           LockStatusResponse)))))))))
                                                                                                   :<|> (Named
                                                                                                           '("ilock",
                                                                                                             MLSConfig)
                                                                                                           (Summary
                                                                                                              "(Un-)lock mls"
                                                                                                            :> (Description
                                                                                                                  ""
                                                                                                                :> (CanThrow
                                                                                                                      'NotATeamMember
                                                                                                                    :> (CanThrow
                                                                                                                          'TeamNotFound
                                                                                                                        :> ("teams"
                                                                                                                            :> (Capture
                                                                                                                                  "tid"
                                                                                                                                  TeamId
                                                                                                                                :> ("features"
                                                                                                                                    :> ("mls"
                                                                                                                                        :> (Capture
                                                                                                                                              "lockStatus"
                                                                                                                                              LockStatus
                                                                                                                                            :> Put
                                                                                                                                                 '[JSON]
                                                                                                                                                 LockStatusResponse)))))))))
                                                                                                         :<|> (Named
                                                                                                                 '("ilock",
                                                                                                                   OutlookCalIntegrationConfig)
                                                                                                                 (Summary
                                                                                                                    "(Un-)lock outlookCalIntegration"
                                                                                                                  :> (Description
                                                                                                                        ""
                                                                                                                      :> (CanThrow
                                                                                                                            'NotATeamMember
                                                                                                                          :> (CanThrow
                                                                                                                                'TeamNotFound
                                                                                                                              :> ("teams"
                                                                                                                                  :> (Capture
                                                                                                                                        "tid"
                                                                                                                                        TeamId
                                                                                                                                      :> ("features"
                                                                                                                                          :> ("outlookCalIntegration"
                                                                                                                                              :> (Capture
                                                                                                                                                    "lockStatus"
                                                                                                                                                    LockStatus
                                                                                                                                                  :> Put
                                                                                                                                                       '[JSON]
                                                                                                                                                       LockStatusResponse)))))))))
                                                                                                               :<|> (Named
                                                                                                                       '("ilock",
                                                                                                                         MlsE2EIdConfig)
                                                                                                                       (Summary
                                                                                                                          "(Un-)lock mlsE2EId"
                                                                                                                        :> (Description
                                                                                                                              ""
                                                                                                                            :> (CanThrow
                                                                                                                                  'NotATeamMember
                                                                                                                                :> (CanThrow
                                                                                                                                      'TeamNotFound
                                                                                                                                    :> ("teams"
                                                                                                                                        :> (Capture
                                                                                                                                              "tid"
                                                                                                                                              TeamId
                                                                                                                                            :> ("features"
                                                                                                                                                :> ("mlsE2EId"
                                                                                                                                                    :> (Capture
                                                                                                                                                          "lockStatus"
                                                                                                                                                          LockStatus
                                                                                                                                                        :> Put
                                                                                                                                                             '[JSON]
                                                                                                                                                             LockStatusResponse)))))))))
                                                                                                                     :<|> (Named
                                                                                                                             '("ilock",
                                                                                                                               MlsMigrationConfig)
                                                                                                                             (Summary
                                                                                                                                "(Un-)lock mlsMigration"
                                                                                                                              :> (Description
                                                                                                                                    ""
                                                                                                                                  :> (CanThrow
                                                                                                                                        'NotATeamMember
                                                                                                                                      :> (CanThrow
                                                                                                                                            'TeamNotFound
                                                                                                                                          :> ("teams"
                                                                                                                                              :> (Capture
                                                                                                                                                    "tid"
                                                                                                                                                    TeamId
                                                                                                                                                  :> ("features"
                                                                                                                                                      :> ("mlsMigration"
                                                                                                                                                          :> (Capture
                                                                                                                                                                "lockStatus"
                                                                                                                                                                LockStatus
                                                                                                                                                              :> Put
                                                                                                                                                                   '[JSON]
                                                                                                                                                                   LockStatusResponse)))))))))
                                                                                                                           :<|> (Named
                                                                                                                                   '("ilock",
                                                                                                                                     EnforceFileDownloadLocationConfig)
                                                                                                                                   (Summary
                                                                                                                                      "(Un-)lock enforceFileDownloadLocation"
                                                                                                                                    :> (Description
                                                                                                                                          "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                        :> (CanThrow
                                                                                                                                              'NotATeamMember
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'TeamNotFound
                                                                                                                                                :> ("teams"
                                                                                                                                                    :> (Capture
                                                                                                                                                          "tid"
                                                                                                                                                          TeamId
                                                                                                                                                        :> ("features"
                                                                                                                                                            :> ("enforceFileDownloadLocation"
                                                                                                                                                                :> (Capture
                                                                                                                                                                      "lockStatus"
                                                                                                                                                                      LockStatus
                                                                                                                                                                    :> Put
                                                                                                                                                                         '[JSON]
                                                                                                                                                                         LockStatusResponse)))))))))
                                                                                                                                 :<|> (Named
                                                                                                                                         '("igetmulti",
                                                                                                                                           SearchVisibilityInboundConfig)
                                                                                                                                         (Summary
                                                                                                                                            "Get team feature status in bulk for feature searchVisibilityInbound"
                                                                                                                                          :> ("features-multi-teams"
                                                                                                                                              :> ("searchVisibilityInbound"
                                                                                                                                                  :> (ReqBody
                                                                                                                                                        '[JSON]
                                                                                                                                                        TeamFeatureNoConfigMultiRequest
                                                                                                                                                      :> Post
                                                                                                                                                           '[JSON]
                                                                                                                                                           (TeamFeatureNoConfigMultiResponse
                                                                                                                                                              SearchVisibilityInboundConfig)))))
                                                                                                                                       :<|> Named
                                                                                                                                              "feature-configs-internal"
                                                                                                                                              (Summary
                                                                                                                                                 "Get all feature configs (for user/team; if n/a fall back to site config)."
                                                                                                                                               :> ("feature-configs"
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         OperationDenied
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'NotATeamMember
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 'TeamNotFound
                                                                                                                                                               :> (QueryParam'
                                                                                                                                                                     '[Optional,
                                                                                                                                                                       Strict,
                                                                                                                                                                       Description
                                                                                                                                                                         "Optional user id"]
                                                                                                                                                                     "user_id"
                                                                                                                                                                     UserId
                                                                                                                                                                   :> Get
                                                                                                                                                                        '[JSON]
                                                                                                                                                                        AllTeamFeatures))))))))))))))))))
                                                                    :<|> (IFederationAPI
                                                                          :<|> (IConversationAPI
                                                                                :<|> IEJPDAPI)))))))))))))
         :<|> (("federation"
                :> (Named
                      "on-conversation-created"
                      ("on-conversation-created"
                       :> (OriginDomainHeader
                           :> (ReqBody '[JSON] (ConversationCreated ConvId)
                               :> Post '[JSON] EmptyResponse)))
                    :<|> (Named
                            "get-conversations@v1"
                            (Until 'V2
                             :> ("get-conversations"
                                 :> (OriginDomainHeader
                                     :> (ReqBody '[JSON] GetConversationsRequest
                                         :> Post '[JSON] GetConversationsResponse))))
                          :<|> (Named
                                  "get-conversations"
                                  (From 'V2
                                   :> ("get-conversations"
                                       :> (OriginDomainHeader
                                           :> (ReqBody '[JSON] GetConversationsRequest
                                               :> Post '[JSON] GetConversationsResponseV2))))
                                :<|> (Named
                                        "leave-conversation"
                                        (MakesFederatedCall 'Galley "on-conversation-updated"
                                         :> (MakesFederatedCall 'Galley "on-mls-message-sent"
                                             :> (MakesFederatedCall 'Brig "get-users-by-ids"
                                                 :> (MakesFederatedCall 'Brig "api-version"
                                                     :> ("leave-conversation"
                                                         :> (OriginDomainHeader
                                                             :> (ReqBody
                                                                   '[JSON] LeaveConversationRequest
                                                                 :> Post
                                                                      '[JSON]
                                                                      LeaveConversationResponse)))))))
                                      :<|> (Named
                                              "send-message"
                                              (MakesFederatedCall 'Galley "on-message-sent"
                                               :> (MakesFederatedCall 'Brig "get-user-clients"
                                                   :> ("send-message"
                                                       :> (OriginDomainHeader
                                                           :> (ReqBody
                                                                 '[JSON] ProteusMessageSendRequest
                                                               :> Post
                                                                    '[JSON] MessageSendResponse)))))
                                            :<|> (Named
                                                    "update-conversation"
                                                    (MakesFederatedCall
                                                       'Galley "on-conversation-updated"
                                                     :> (MakesFederatedCall
                                                           'Galley "on-mls-message-sent"
                                                         :> (MakesFederatedCall
                                                               'Brig "get-users-by-ids"
                                                             :> (MakesFederatedCall
                                                                   'Galley "on-mls-message-sent"
                                                                 :> ("update-conversation"
                                                                     :> (OriginDomainHeader
                                                                         :> (ReqBody
                                                                               '[JSON]
                                                                               ConversationUpdateRequest
                                                                             :> Post
                                                                                  '[JSON]
                                                                                  ConversationUpdateResponse)))))))
                                                  :<|> (Named
                                                          "mls-welcome"
                                                          ("mls-welcome"
                                                           :> (OriginDomainHeader
                                                               :> (ReqBody '[JSON] MLSWelcomeRequest
                                                                   :> Post
                                                                        '[JSON]
                                                                        MLSWelcomeResponse)))
                                                        :<|> (Named
                                                                "send-mls-message"
                                                                (MakesFederatedCall
                                                                   'Galley "on-conversation-updated"
                                                                 :> (MakesFederatedCall
                                                                       'Galley "on-mls-message-sent"
                                                                     :> (MakesFederatedCall
                                                                           'Galley
                                                                           "send-mls-message"
                                                                         :> (MakesFederatedCall
                                                                               'Brig
                                                                               "get-mls-clients"
                                                                             :> ("send-mls-message"
                                                                                 :> (OriginDomainHeader
                                                                                     :> (ReqBody
                                                                                           '[JSON]
                                                                                           MLSMessageSendRequest
                                                                                         :> Post
                                                                                              '[JSON]
                                                                                              MLSMessageResponse)))))))
                                                              :<|> (Named
                                                                      "send-mls-commit-bundle"
                                                                      (MakesFederatedCall
                                                                         'Galley "mls-welcome"
                                                                       :> (MakesFederatedCall
                                                                             'Galley
                                                                             "on-conversation-updated"
                                                                           :> (MakesFederatedCall
                                                                                 'Galley
                                                                                 "on-mls-message-sent"
                                                                               :> (MakesFederatedCall
                                                                                     'Galley
                                                                                     "send-mls-commit-bundle"
                                                                                   :> (MakesFederatedCall
                                                                                         'Brig
                                                                                         "get-mls-clients"
                                                                                       :> (MakesFederatedCall
                                                                                             'Brig
                                                                                             "get-users-by-ids"
                                                                                           :> (MakesFederatedCall
                                                                                                 'Brig
                                                                                                 "api-version"
                                                                                               :> ("send-mls-commit-bundle"
                                                                                                   :> (OriginDomainHeader
                                                                                                       :> (ReqBody
                                                                                                             '[JSON]
                                                                                                             MLSMessageSendRequest
                                                                                                           :> Post
                                                                                                                '[JSON]
                                                                                                                MLSMessageResponse))))))))))
                                                                    :<|> (Named
                                                                            "query-group-info"
                                                                            ("query-group-info"
                                                                             :> (OriginDomainHeader
                                                                                 :> (ReqBody
                                                                                       '[JSON]
                                                                                       GetGroupInfoRequest
                                                                                     :> Post
                                                                                          '[JSON]
                                                                                          GetGroupInfoResponse)))
                                                                          :<|> (Named
                                                                                  "update-typing-indicator"
                                                                                  (MakesFederatedCall
                                                                                     'Galley
                                                                                     "on-typing-indicator-updated"
                                                                                   :> ("update-typing-indicator"
                                                                                       :> (OriginDomainHeader
                                                                                           :> (ReqBody
                                                                                                 '[JSON]
                                                                                                 TypingDataUpdateRequest
                                                                                               :> Post
                                                                                                    '[JSON]
                                                                                                    TypingDataUpdateResponse))))
                                                                                :<|> (Named
                                                                                        "on-typing-indicator-updated"
                                                                                        ("on-typing-indicator-updated"
                                                                                         :> (OriginDomainHeader
                                                                                             :> (ReqBody
                                                                                                   '[JSON]
                                                                                                   TypingDataUpdated
                                                                                                 :> Post
                                                                                                      '[JSON]
                                                                                                      EmptyResponse)))
                                                                                      :<|> (Named
                                                                                              "get-sub-conversation"
                                                                                              (From
                                                                                                 'V1
                                                                                               :> ("get-sub-conversation"
                                                                                                   :> (OriginDomainHeader
                                                                                                       :> (ReqBody
                                                                                                             '[JSON]
                                                                                                             GetSubConversationsRequest
                                                                                                           :> Post
                                                                                                                '[JSON]
                                                                                                                GetSubConversationsResponse))))
                                                                                            :<|> (Named
                                                                                                    "delete-sub-conversation"
                                                                                                    (From
                                                                                                       'V1
                                                                                                     :> ("delete-sub-conversation"
                                                                                                         :> (OriginDomainHeader
                                                                                                             :> (ReqBody
                                                                                                                   '[JSON]
                                                                                                                   DeleteSubConversationFedRequest
                                                                                                                 :> Post
                                                                                                                      '[JSON]
                                                                                                                      DeleteSubConversationResponse))))
                                                                                                  :<|> (Named
                                                                                                          "leave-sub-conversation"
                                                                                                          (MakesFederatedCall
                                                                                                             'Galley
                                                                                                             "on-mls-message-sent"
                                                                                                           :> (From
                                                                                                                 'V1
                                                                                                               :> ("leave-sub-conversation"
                                                                                                                   :> (OriginDomainHeader
                                                                                                                       :> (ReqBody
                                                                                                                             '[JSON]
                                                                                                                             LeaveSubConversationRequest
                                                                                                                           :> Post
                                                                                                                                '[JSON]
                                                                                                                                LeaveSubConversationResponse)))))
                                                                                                        :<|> (Named
                                                                                                                "get-one2one-conversation@v1"
                                                                                                                (From
                                                                                                                   'V1
                                                                                                                 :> (Until
                                                                                                                       'V2
                                                                                                                     :> ("get-one2one-conversation"
                                                                                                                         :> (OriginDomainHeader
                                                                                                                             :> (ReqBody
                                                                                                                                   '[JSON]
                                                                                                                                   GetOne2OneConversationRequest
                                                                                                                                 :> Post
                                                                                                                                      '[JSON]
                                                                                                                                      GetOne2OneConversationResponse)))))
                                                                                                              :<|> (Named
                                                                                                                      "get-one2one-conversation"
                                                                                                                      (From
                                                                                                                         'V2
                                                                                                                       :> ("get-one2one-conversation"
                                                                                                                           :> (OriginDomainHeader
                                                                                                                               :> (ReqBody
                                                                                                                                     '[JSON]
                                                                                                                                     GetOne2OneConversationRequest
                                                                                                                                   :> Post
                                                                                                                                        '[JSON]
                                                                                                                                        GetOne2OneConversationResponseV2))))
                                                                                                                    :<|> (Named
                                                                                                                            "on-client-removed"
                                                                                                                            ("on-client-removed"
                                                                                                                             :> (OriginDomainHeader
                                                                                                                                 :> (ReqBody
                                                                                                                                       '[JSON]
                                                                                                                                       ClientRemovedRequest
                                                                                                                                     :> Post
                                                                                                                                          '[JSON]
                                                                                                                                          EmptyResponse)))
                                                                                                                          :<|> (Named
                                                                                                                                  "on-message-sent"
                                                                                                                                  ("on-message-sent"
                                                                                                                                   :> (OriginDomainHeader
                                                                                                                                       :> (ReqBody
                                                                                                                                             '[JSON]
                                                                                                                                             (RemoteMessage
                                                                                                                                                ConvId)
                                                                                                                                           :> Post
                                                                                                                                                '[JSON]
                                                                                                                                                EmptyResponse)))
                                                                                                                                :<|> (Named
                                                                                                                                        "on-mls-message-sent"
                                                                                                                                        ("on-mls-message-sent"
                                                                                                                                         :> (OriginDomainHeader
                                                                                                                                             :> (ReqBody
                                                                                                                                                   '[JSON]
                                                                                                                                                   RemoteMLSMessage
                                                                                                                                                 :> Post
                                                                                                                                                      '[JSON]
                                                                                                                                                      EmptyResponse)))
                                                                                                                                      :<|> (Named
                                                                                                                                              (Versioned
                                                                                                                                                 'V0
                                                                                                                                                 "on-conversation-updated")
                                                                                                                                              (Until
                                                                                                                                                 'V1
                                                                                                                                               :> ("on-conversation-updated"
                                                                                                                                                   :> (OriginDomainHeader
                                                                                                                                                       :> (ReqBody
                                                                                                                                                             '[JSON]
                                                                                                                                                             ConversationUpdateV0
                                                                                                                                                           :> Post
                                                                                                                                                                '[JSON]
                                                                                                                                                                EmptyResponse))))
                                                                                                                                            :<|> (Named
                                                                                                                                                    "on-conversation-updated"
                                                                                                                                                    (From
                                                                                                                                                       'V1
                                                                                                                                                     :> ("on-conversation-updated"
                                                                                                                                                         :> (OriginDomainHeader
                                                                                                                                                             :> (ReqBody
                                                                                                                                                                   '[JSON]
                                                                                                                                                                   ConversationUpdate
                                                                                                                                                                 :> Post
                                                                                                                                                                      '[JSON]
                                                                                                                                                                      EmptyResponse))))
                                                                                                                                                  :<|> Named
                                                                                                                                                         "on-user-deleted-conversations"
                                                                                                                                                         ("on-user-deleted-conversations"
                                                                                                                                                          :> (OriginDomainHeader
                                                                                                                                                              :> (ReqBody
                                                                                                                                                                    '[JSON]
                                                                                                                                                                    UserDeletedConversationsNotification
                                                                                                                                                                  :> Post
                                                                                                                                                                       '[JSON]
                                                                                                                                                                       EmptyResponse))))))))))))))))))))))))))
               :<|> Raw)))
-> Context '[Domain, ErrorFormatters]
-> Server
     (((Named
          "get-unqualified-conversation"
          (Summary "Get a conversation by ID"
           :> (Until 'V3
               :> (CanThrow 'ConvNotFound
                   :> (CanThrow 'ConvAccessDenied
                       :> (ZLocalUser
                           :> ("conversations"
                               :> (Capture "cnv" ConvId
                                   :> MultiVerb
                                        'GET
                                        '[JSON]
                                        '[VersionedRespond 'V2 200 "Conversation" Conversation]
                                        Conversation)))))))
        :<|> (Named
                "get-unqualified-conversation-legalhold-alias"
                (Summary "Get a conversation by ID (Legalhold alias)"
                 :> (Until 'V2
                     :> (CanThrow 'ConvNotFound
                         :> (CanThrow 'ConvAccessDenied
                             :> (ZLocalUser
                                 :> ("legalhold"
                                     :> ("conversations"
                                         :> (Capture "cnv" ConvId
                                             :> MultiVerb
                                                  'GET
                                                  '[JSON]
                                                  '[VersionedRespond
                                                      'V2 200 "Conversation" Conversation]
                                                  Conversation))))))))
              :<|> (Named
                      "get-conversation@v2"
                      (Summary "Get a conversation by ID"
                       :> (Until 'V3
                           :> (MakesFederatedCall 'Galley "get-conversations"
                               :> (CanThrow 'ConvNotFound
                                   :> (CanThrow 'ConvAccessDenied
                                       :> (ZLocalUser
                                           :> ("conversations"
                                               :> (QualifiedCapture "cnv" ConvId
                                                   :> MultiVerb
                                                        'GET
                                                        '[JSON]
                                                        '[VersionedRespond
                                                            'V2 200 "Conversation" Conversation]
                                                        Conversation))))))))
                    :<|> (Named
                            "get-conversation@v5"
                            (Summary "Get a conversation by ID"
                             :> (From 'V3
                                 :> (Until 'V6
                                     :> (MakesFederatedCall 'Galley "get-conversations"
                                         :> (CanThrow 'ConvNotFound
                                             :> (CanThrow 'ConvAccessDenied
                                                 :> (ZLocalUser
                                                     :> ("conversations"
                                                         :> (QualifiedCapture "cnv" ConvId
                                                             :> MultiVerb
                                                                  'GET
                                                                  '[JSON]
                                                                  '[VersionedRespond
                                                                      'V5
                                                                      200
                                                                      "Conversation"
                                                                      Conversation]
                                                                  Conversation)))))))))
                          :<|> (Named
                                  "get-conversation"
                                  (Summary "Get a conversation by ID"
                                   :> (From 'V6
                                       :> (MakesFederatedCall 'Galley "get-conversations"
                                           :> (CanThrow 'ConvNotFound
                                               :> (CanThrow 'ConvAccessDenied
                                                   :> (ZLocalUser
                                                       :> ("conversations"
                                                           :> (QualifiedCapture "cnv" ConvId
                                                               :> Get '[JSON] Conversation))))))))
                                :<|> (Named
                                        "get-conversation-roles"
                                        (Summary
                                           "Get existing roles available for the given conversation"
                                         :> (CanThrow 'ConvNotFound
                                             :> (CanThrow 'ConvAccessDenied
                                                 :> (ZLocalUser
                                                     :> ("conversations"
                                                         :> (Capture "cnv" ConvId
                                                             :> ("roles"
                                                                 :> Get
                                                                      '[JSON]
                                                                      ConversationRolesList)))))))
                                      :<|> (Named
                                              "get-group-info"
                                              (Summary "Get MLS group information"
                                               :> (From 'V5
                                                   :> (MakesFederatedCall 'Galley "query-group-info"
                                                       :> (CanThrow 'ConvNotFound
                                                           :> (CanThrow 'MLSMissingGroupInfo
                                                               :> (CanThrow 'MLSNotEnabled
                                                                   :> (ZLocalUser
                                                                       :> ("conversations"
                                                                           :> (QualifiedCapture
                                                                                 "cnv" ConvId
                                                                               :> ("groupinfo"
                                                                                   :> MultiVerb
                                                                                        'GET
                                                                                        '[MLS]
                                                                                        '[Respond
                                                                                            200
                                                                                            "The group information"
                                                                                            GroupInfoData]
                                                                                        GroupInfoData))))))))))
                                            :<|> (Named
                                                    "list-conversation-ids-unqualified"
                                                    (Summary
                                                       "[deprecated] Get all local conversation IDs."
                                                     :> (Until 'V3
                                                         :> (ZLocalUser
                                                             :> ("conversations"
                                                                 :> ("ids"
                                                                     :> (QueryParam'
                                                                           '[Optional, Strict,
                                                                             Description
                                                                               "Conversation ID to start from (exclusive)"]
                                                                           "start"
                                                                           ConvId
                                                                         :> (QueryParam'
                                                                               '[Optional, Strict,
                                                                                 Description
                                                                                   "Maximum number of IDs to return"]
                                                                               "size"
                                                                               (Range 1 1000 Int32)
                                                                             :> Get
                                                                                  '[JSON]
                                                                                  (ConversationList
                                                                                     ConvId))))))))
                                                  :<|> (Named
                                                          "list-conversation-ids-v2"
                                                          (Summary "Get all conversation IDs."
                                                           :> (Until 'V3
                                                               :> (Description PaginationDocs
                                                                   :> (ZLocalUser
                                                                       :> ("conversations"
                                                                           :> ("list-ids"
                                                                               :> (ReqBody
                                                                                     '[JSON]
                                                                                     GetPaginatedConversationIds
                                                                                   :> Post
                                                                                        '[JSON]
                                                                                        ConvIdsPage)))))))
                                                        :<|> (Named
                                                                "list-conversation-ids"
                                                                (Summary "Get all conversation IDs."
                                                                 :> (From 'V3
                                                                     :> (Description PaginationDocs
                                                                         :> (ZLocalUser
                                                                             :> ("conversations"
                                                                                 :> ("list-ids"
                                                                                     :> (ReqBody
                                                                                           '[JSON]
                                                                                           GetPaginatedConversationIds
                                                                                         :> Post
                                                                                              '[JSON]
                                                                                              ConvIdsPage)))))))
                                                              :<|> (Named
                                                                      "get-conversations"
                                                                      (Summary
                                                                         "Get all *local* conversations."
                                                                       :> (Until 'V3
                                                                           :> (Description
                                                                                 "Will not return remote conversations.\n\nUse `POST /conversations/list-ids` followed by `POST /conversations/list` instead."
                                                                               :> (ZLocalUser
                                                                                   :> ("conversations"
                                                                                       :> (QueryParam'
                                                                                             '[Optional,
                                                                                               Strict,
                                                                                               Description
                                                                                                 "Mutually exclusive with 'start' (at most 32 IDs per request)"]
                                                                                             "ids"
                                                                                             (Range
                                                                                                1
                                                                                                32
                                                                                                (CommaSeparatedList
                                                                                                   ConvId))
                                                                                           :> (QueryParam'
                                                                                                 '[Optional,
                                                                                                   Strict,
                                                                                                   Description
                                                                                                     "Conversation ID to start from (exclusive)"]
                                                                                                 "start"
                                                                                                 ConvId
                                                                                               :> (QueryParam'
                                                                                                     '[Optional,
                                                                                                       Strict,
                                                                                                       Description
                                                                                                         "Maximum number of conversations to return"]
                                                                                                     "size"
                                                                                                     (Range
                                                                                                        1
                                                                                                        500
                                                                                                        Int32)
                                                                                                   :> MultiVerb
                                                                                                        'GET
                                                                                                        '[JSON]
                                                                                                        '[VersionedRespond
                                                                                                            'V2
                                                                                                            200
                                                                                                            "List of local conversations"
                                                                                                            (ConversationList
                                                                                                               Conversation)]
                                                                                                        (ConversationList
                                                                                                           Conversation)))))))))
                                                                    :<|> (Named
                                                                            "list-conversations@v1"
                                                                            (Summary
                                                                               "Get conversation metadata for a list of conversation ids"
                                                                             :> (MakesFederatedCall
                                                                                   'Galley
                                                                                   "get-conversations"
                                                                                 :> (Until 'V2
                                                                                     :> (ZLocalUser
                                                                                         :> ("conversations"
                                                                                             :> ("list"
                                                                                                 :> ("v2"
                                                                                                     :> (ReqBody
                                                                                                           '[JSON]
                                                                                                           ListConversations
                                                                                                         :> Post
                                                                                                              '[JSON]
                                                                                                              ConversationsResponse))))))))
                                                                          :<|> (Named
                                                                                  "list-conversations@v2"
                                                                                  (Summary
                                                                                     "Get conversation metadata for a list of conversation ids"
                                                                                   :> (MakesFederatedCall
                                                                                         'Galley
                                                                                         "get-conversations"
                                                                                       :> (From 'V2
                                                                                           :> (Until
                                                                                                 'V3
                                                                                               :> (ZLocalUser
                                                                                                   :> ("conversations"
                                                                                                       :> ("list"
                                                                                                           :> (ReqBody
                                                                                                                 '[JSON]
                                                                                                                 ListConversations
                                                                                                               :> MultiVerb
                                                                                                                    'POST
                                                                                                                    '[JSON]
                                                                                                                    '[VersionedRespond
                                                                                                                        'V2
                                                                                                                        200
                                                                                                                        "Conversation page"
                                                                                                                        ConversationsResponse]
                                                                                                                    ConversationsResponse))))))))
                                                                                :<|> (Named
                                                                                        "list-conversations@v5"
                                                                                        (Summary
                                                                                           "Get conversation metadata for a list of conversation ids"
                                                                                         :> (MakesFederatedCall
                                                                                               'Galley
                                                                                               "get-conversations"
                                                                                             :> (From
                                                                                                   'V3
                                                                                                 :> (Until
                                                                                                       'V6
                                                                                                     :> (ZLocalUser
                                                                                                         :> ("conversations"
                                                                                                             :> ("list"
                                                                                                                 :> (ReqBody
                                                                                                                       '[JSON]
                                                                                                                       ListConversations
                                                                                                                     :> MultiVerb
                                                                                                                          'POST
                                                                                                                          '[JSON]
                                                                                                                          '[VersionedRespond
                                                                                                                              'V5
                                                                                                                              200
                                                                                                                              "Conversation page"
                                                                                                                              ConversationsResponse]
                                                                                                                          ConversationsResponse))))))))
                                                                                      :<|> (Named
                                                                                              "list-conversations"
                                                                                              (Summary
                                                                                                 "Get conversation metadata for a list of conversation ids"
                                                                                               :> (MakesFederatedCall
                                                                                                     'Galley
                                                                                                     "get-conversations"
                                                                                                   :> (From
                                                                                                         'V6
                                                                                                       :> (ZLocalUser
                                                                                                           :> ("conversations"
                                                                                                               :> ("list"
                                                                                                                   :> (ReqBody
                                                                                                                         '[JSON]
                                                                                                                         ListConversations
                                                                                                                       :> Post
                                                                                                                            '[JSON]
                                                                                                                            ConversationsResponse)))))))
                                                                                            :<|> (Named
                                                                                                    "get-conversation-by-reusable-code"
                                                                                                    (Summary
                                                                                                       "Get limited conversation information by key/code pair"
                                                                                                     :> (CanThrow
                                                                                                           'CodeNotFound
                                                                                                         :> (CanThrow
                                                                                                               'InvalidConversationPassword
                                                                                                             :> (CanThrow
                                                                                                                   'ConvNotFound
                                                                                                                 :> (CanThrow
                                                                                                                       'ConvAccessDenied
                                                                                                                     :> (CanThrow
                                                                                                                           'GuestLinksDisabled
                                                                                                                         :> (CanThrow
                                                                                                                               'NotATeamMember
                                                                                                                             :> (ZLocalUser
                                                                                                                                 :> ("conversations"
                                                                                                                                     :> ("join"
                                                                                                                                         :> (QueryParam'
                                                                                                                                               '[Required,
                                                                                                                                                 Strict]
                                                                                                                                               "key"
                                                                                                                                               Key
                                                                                                                                             :> (QueryParam'
                                                                                                                                                   '[Required,
                                                                                                                                                     Strict]
                                                                                                                                                   "code"
                                                                                                                                                   Value
                                                                                                                                                 :> Get
                                                                                                                                                      '[JSON]
                                                                                                                                                      ConversationCoverView))))))))))))
                                                                                                  :<|> (Named
                                                                                                          "create-group-conversation@v2"
                                                                                                          (Summary
                                                                                                             "Create a new conversation"
                                                                                                           :> (DescriptionOAuthScope
                                                                                                                 'WriteConversations
                                                                                                               :> (MakesFederatedCall
                                                                                                                     'Brig
                                                                                                                     "api-version"
                                                                                                                   :> (MakesFederatedCall
                                                                                                                         'Galley
                                                                                                                         "on-conversation-created"
                                                                                                                       :> (MakesFederatedCall
                                                                                                                             'Galley
                                                                                                                             "on-conversation-updated"
                                                                                                                           :> (Until
                                                                                                                                 'V3
                                                                                                                               :> (CanThrow
                                                                                                                                     'ConvAccessDenied
                                                                                                                                   :> (CanThrow
                                                                                                                                         'MLSNonEmptyMemberList
                                                                                                                                       :> (CanThrow
                                                                                                                                             'MLSNotEnabled
                                                                                                                                           :> (CanThrow
                                                                                                                                                 'NotConnected
                                                                                                                                               :> (CanThrow
                                                                                                                                                     'NotATeamMember
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         OperationDenied
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'MissingLegalholdConsent
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 UnreachableBackendsLegacy
                                                                                                                                                               :> (Description
                                                                                                                                                                     "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                   :> (ZLocalUser
                                                                                                                                                                       :> (ZOptConn
                                                                                                                                                                           :> ("conversations"
                                                                                                                                                                               :> (VersionedReqBody
                                                                                                                                                                                     'V2
                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                     NewConv
                                                                                                                                                                                   :> MultiVerb
                                                                                                                                                                                        'POST
                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                        '[WithHeaders
                                                                                                                                                                                            ConversationHeaders
                                                                                                                                                                                            Conversation
                                                                                                                                                                                            (VersionedRespond
                                                                                                                                                                                               'V2
                                                                                                                                                                                               200
                                                                                                                                                                                               "Conversation existed"
                                                                                                                                                                                               Conversation),
                                                                                                                                                                                          WithHeaders
                                                                                                                                                                                            ConversationHeaders
                                                                                                                                                                                            Conversation
                                                                                                                                                                                            (VersionedRespond
                                                                                                                                                                                               'V2
                                                                                                                                                                                               201
                                                                                                                                                                                               "Conversation created"
                                                                                                                                                                                               Conversation)]
                                                                                                                                                                                        (ResponseForExistedCreated
                                                                                                                                                                                           Conversation))))))))))))))))))))
                                                                                                        :<|> (Named
                                                                                                                "create-group-conversation@v3"
                                                                                                                (Summary
                                                                                                                   "Create a new conversation"
                                                                                                                 :> (DescriptionOAuthScope
                                                                                                                       'WriteConversations
                                                                                                                     :> (MakesFederatedCall
                                                                                                                           'Brig
                                                                                                                           "api-version"
                                                                                                                         :> (MakesFederatedCall
                                                                                                                               'Galley
                                                                                                                               "on-conversation-created"
                                                                                                                             :> (MakesFederatedCall
                                                                                                                                   'Galley
                                                                                                                                   "on-conversation-updated"
                                                                                                                                 :> (From
                                                                                                                                       'V3
                                                                                                                                     :> (Until
                                                                                                                                           'V4
                                                                                                                                         :> (CanThrow
                                                                                                                                               'ConvAccessDenied
                                                                                                                                             :> (CanThrow
                                                                                                                                                   'MLSNonEmptyMemberList
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'MLSNotEnabled
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'NotConnected
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'NotATeamMember
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   OperationDenied
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       'MissingLegalholdConsent
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           UnreachableBackendsLegacy
                                                                                                                                                                         :> (Description
                                                                                                                                                                               "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                             :> (ZLocalUser
                                                                                                                                                                                 :> (ZOptConn
                                                                                                                                                                                     :> ("conversations"
                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                               NewConv
                                                                                                                                                                                             :> MultiVerb
                                                                                                                                                                                                  'POST
                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                  '[WithHeaders
                                                                                                                                                                                                      ConversationHeaders
                                                                                                                                                                                                      Conversation
                                                                                                                                                                                                      (VersionedRespond
                                                                                                                                                                                                         'V3
                                                                                                                                                                                                         200
                                                                                                                                                                                                         "Conversation existed"
                                                                                                                                                                                                         Conversation),
                                                                                                                                                                                                    WithHeaders
                                                                                                                                                                                                      ConversationHeaders
                                                                                                                                                                                                      Conversation
                                                                                                                                                                                                      (VersionedRespond
                                                                                                                                                                                                         'V3
                                                                                                                                                                                                         201
                                                                                                                                                                                                         "Conversation created"
                                                                                                                                                                                                         Conversation)]
                                                                                                                                                                                                  (ResponseForExistedCreated
                                                                                                                                                                                                     Conversation)))))))))))))))))))))
                                                                                                              :<|> (Named
                                                                                                                      "create-group-conversation@v5"
                                                                                                                      (Summary
                                                                                                                         "Create a new conversation"
                                                                                                                       :> (MakesFederatedCall
                                                                                                                             'Brig
                                                                                                                             "api-version"
                                                                                                                           :> (MakesFederatedCall
                                                                                                                                 'Brig
                                                                                                                                 "get-not-fully-connected-backends"
                                                                                                                               :> (MakesFederatedCall
                                                                                                                                     'Galley
                                                                                                                                     "on-conversation-created"
                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                         'Galley
                                                                                                                                         "on-conversation-updated"
                                                                                                                                       :> (From
                                                                                                                                             'V4
                                                                                                                                           :> (Until
                                                                                                                                                 'V6
                                                                                                                                               :> (CanThrow
                                                                                                                                                     'ConvAccessDenied
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'MLSNonEmptyMemberList
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'MLSNotEnabled
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 'NotConnected
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         OperationDenied
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             'MissingLegalholdConsent
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 NonFederatingBackends
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     UnreachableBackends
                                                                                                                                                                                   :> (Description
                                                                                                                                                                                         "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                                       :> (ZLocalUser
                                                                                                                                                                                           :> (ZOptConn
                                                                                                                                                                                               :> ("conversations"
                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                         NewConv
                                                                                                                                                                                                       :> MultiVerb
                                                                                                                                                                                                            'POST
                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                            '[WithHeaders
                                                                                                                                                                                                                ConversationHeaders
                                                                                                                                                                                                                Conversation
                                                                                                                                                                                                                (VersionedRespond
                                                                                                                                                                                                                   'V5
                                                                                                                                                                                                                   200
                                                                                                                                                                                                                   "Conversation existed"
                                                                                                                                                                                                                   Conversation),
                                                                                                                                                                                                              WithHeaders
                                                                                                                                                                                                                ConversationHeaders
                                                                                                                                                                                                                CreateGroupConversation
                                                                                                                                                                                                                (VersionedRespond
                                                                                                                                                                                                                   'V5
                                                                                                                                                                                                                   201
                                                                                                                                                                                                                   "Conversation created"
                                                                                                                                                                                                                   CreateGroupConversation)]
                                                                                                                                                                                                            CreateGroupConversationResponse)))))))))))))))))))))
                                                                                                                    :<|> (Named
                                                                                                                            "create-group-conversation"
                                                                                                                            (Summary
                                                                                                                               "Create a new conversation"
                                                                                                                             :> (MakesFederatedCall
                                                                                                                                   'Brig
                                                                                                                                   "api-version"
                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                       'Brig
                                                                                                                                       "get-not-fully-connected-backends"
                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                           'Galley
                                                                                                                                           "on-conversation-created"
                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                               'Galley
                                                                                                                                               "on-conversation-updated"
                                                                                                                                             :> (From
                                                                                                                                                   'V6
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'ConvAccessDenied
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'MLSNonEmptyMemberList
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'MLSNotEnabled
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'NotConnected
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           OperationDenied
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               'MissingLegalholdConsent
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   NonFederatingBackends
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       UnreachableBackends
                                                                                                                                                                                     :> (Description
                                                                                                                                                                                           "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                                         :> (ZLocalUser
                                                                                                                                                                                             :> (ZOptConn
                                                                                                                                                                                                 :> ("conversations"
                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           NewConv
                                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                                              'POST
                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                              '[WithHeaders
                                                                                                                                                                                                                  ConversationHeaders
                                                                                                                                                                                                                  Conversation
                                                                                                                                                                                                                  (VersionedRespond
                                                                                                                                                                                                                     'V6
                                                                                                                                                                                                                     200
                                                                                                                                                                                                                     "Conversation existed"
                                                                                                                                                                                                                     Conversation),
                                                                                                                                                                                                                WithHeaders
                                                                                                                                                                                                                  ConversationHeaders
                                                                                                                                                                                                                  CreateGroupConversation
                                                                                                                                                                                                                  (VersionedRespond
                                                                                                                                                                                                                     'V6
                                                                                                                                                                                                                     201
                                                                                                                                                                                                                     "Conversation created"
                                                                                                                                                                                                                     CreateGroupConversation)]
                                                                                                                                                                                                              CreateGroupConversationResponse))))))))))))))))))))
                                                                                                                          :<|> (Named
                                                                                                                                  "create-self-conversation@v2"
                                                                                                                                  (Summary
                                                                                                                                     "Create a self-conversation"
                                                                                                                                   :> (Until
                                                                                                                                         'V3
                                                                                                                                       :> (ZLocalUser
                                                                                                                                           :> ("conversations"
                                                                                                                                               :> ("self"
                                                                                                                                                   :> MultiVerb
                                                                                                                                                        'POST
                                                                                                                                                        '[JSON]
                                                                                                                                                        '[WithHeaders
                                                                                                                                                            ConversationHeaders
                                                                                                                                                            Conversation
                                                                                                                                                            (VersionedRespond
                                                                                                                                                               'V2
                                                                                                                                                               200
                                                                                                                                                               "Conversation existed"
                                                                                                                                                               Conversation),
                                                                                                                                                          WithHeaders
                                                                                                                                                            ConversationHeaders
                                                                                                                                                            Conversation
                                                                                                                                                            (VersionedRespond
                                                                                                                                                               'V2
                                                                                                                                                               201
                                                                                                                                                               "Conversation created"
                                                                                                                                                               Conversation)]
                                                                                                                                                        (ResponseForExistedCreated
                                                                                                                                                           Conversation))))))
                                                                                                                                :<|> (Named
                                                                                                                                        "create-self-conversation@v5"
                                                                                                                                        (Summary
                                                                                                                                           "Create a self-conversation"
                                                                                                                                         :> (From
                                                                                                                                               'V3
                                                                                                                                             :> (Until
                                                                                                                                                   'V6
                                                                                                                                                 :> (ZLocalUser
                                                                                                                                                     :> ("conversations"
                                                                                                                                                         :> ("self"
                                                                                                                                                             :> MultiVerb
                                                                                                                                                                  'POST
                                                                                                                                                                  '[JSON]
                                                                                                                                                                  '[WithHeaders
                                                                                                                                                                      ConversationHeaders
                                                                                                                                                                      Conversation
                                                                                                                                                                      (VersionedRespond
                                                                                                                                                                         'V5
                                                                                                                                                                         200
                                                                                                                                                                         "Conversation existed"
                                                                                                                                                                         Conversation),
                                                                                                                                                                    WithHeaders
                                                                                                                                                                      ConversationHeaders
                                                                                                                                                                      Conversation
                                                                                                                                                                      (VersionedRespond
                                                                                                                                                                         'V5
                                                                                                                                                                         201
                                                                                                                                                                         "Conversation created"
                                                                                                                                                                         Conversation)]
                                                                                                                                                                  (ResponseForExistedCreated
                                                                                                                                                                     Conversation)))))))
                                                                                                                                      :<|> (Named
                                                                                                                                              "create-self-conversation"
                                                                                                                                              (Summary
                                                                                                                                                 "Create a self-conversation"
                                                                                                                                               :> (From
                                                                                                                                                     'V6
                                                                                                                                                   :> (ZLocalUser
                                                                                                                                                       :> ("conversations"
                                                                                                                                                           :> ("self"
                                                                                                                                                               :> MultiVerb
                                                                                                                                                                    'POST
                                                                                                                                                                    '[JSON]
                                                                                                                                                                    '[WithHeaders
                                                                                                                                                                        ConversationHeaders
                                                                                                                                                                        Conversation
                                                                                                                                                                        (VersionedRespond
                                                                                                                                                                           'V6
                                                                                                                                                                           200
                                                                                                                                                                           "Conversation existed"
                                                                                                                                                                           Conversation),
                                                                                                                                                                      WithHeaders
                                                                                                                                                                        ConversationHeaders
                                                                                                                                                                        Conversation
                                                                                                                                                                        (VersionedRespond
                                                                                                                                                                           'V6
                                                                                                                                                                           201
                                                                                                                                                                           "Conversation created"
                                                                                                                                                                           Conversation)]
                                                                                                                                                                    (ResponseForExistedCreated
                                                                                                                                                                       Conversation))))))
                                                                                                                                            :<|> (Named
                                                                                                                                                    "get-mls-self-conversation@v5"
                                                                                                                                                    (Summary
                                                                                                                                                       "Get the user's MLS self-conversation"
                                                                                                                                                     :> (From
                                                                                                                                                           'V5
                                                                                                                                                         :> (Until
                                                                                                                                                               'V6
                                                                                                                                                             :> (ZLocalUser
                                                                                                                                                                 :> ("conversations"
                                                                                                                                                                     :> ("mls-self"
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               'MLSNotEnabled
                                                                                                                                                                             :> MultiVerb
                                                                                                                                                                                  'GET
                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                  '[VersionedRespond
                                                                                                                                                                                      'V5
                                                                                                                                                                                      200
                                                                                                                                                                                      "The MLS self-conversation"
                                                                                                                                                                                      Conversation]
                                                                                                                                                                                  Conversation)))))))
                                                                                                                                                  :<|> (Named
                                                                                                                                                          "get-mls-self-conversation"
                                                                                                                                                          (Summary
                                                                                                                                                             "Get the user's MLS self-conversation"
                                                                                                                                                           :> (From
                                                                                                                                                                 'V6
                                                                                                                                                               :> (ZLocalUser
                                                                                                                                                                   :> ("conversations"
                                                                                                                                                                       :> ("mls-self"
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 'MLSNotEnabled
                                                                                                                                                                               :> MultiVerb
                                                                                                                                                                                    'GET
                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                    '[Respond
                                                                                                                                                                                        200
                                                                                                                                                                                        "The MLS self-conversation"
                                                                                                                                                                                        Conversation]
                                                                                                                                                                                    Conversation))))))
                                                                                                                                                        :<|> (Named
                                                                                                                                                                "get-subconversation"
                                                                                                                                                                (Summary
                                                                                                                                                                   "Get information about an MLS subconversation"
                                                                                                                                                                 :> (From
                                                                                                                                                                       'V5
                                                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                                                           'Galley
                                                                                                                                                                           "get-sub-conversation"
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               'ConvNotFound
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   'ConvAccessDenied
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       'MLSSubConvUnsupportedConvType
                                                                                                                                                                                     :> (ZLocalUser
                                                                                                                                                                                         :> ("conversations"
                                                                                                                                                                                             :> (QualifiedCapture
                                                                                                                                                                                                   "cnv"
                                                                                                                                                                                                   ConvId
                                                                                                                                                                                                 :> ("subconversations"
                                                                                                                                                                                                     :> (Capture
                                                                                                                                                                                                           "subconv"
                                                                                                                                                                                                           SubConvId
                                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                                              'GET
                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                              '[Respond
                                                                                                                                                                                                                  200
                                                                                                                                                                                                                  "Subconversation"
                                                                                                                                                                                                                  PublicSubConversation]
                                                                                                                                                                                                              PublicSubConversation)))))))))))
                                                                                                                                                              :<|> (Named
                                                                                                                                                                      "leave-subconversation"
                                                                                                                                                                      (Summary
                                                                                                                                                                         "Leave an MLS subconversation"
                                                                                                                                                                       :> (From
                                                                                                                                                                             'V5
                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                 'Galley
                                                                                                                                                                                 "on-mls-message-sent"
                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                     'Galley
                                                                                                                                                                                     "leave-sub-conversation"
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         'ConvNotFound
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             'ConvAccessDenied
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'MLSProtocolErrorTag
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'MLSStaleMessage
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'MLSNotEnabled
                                                                                                                                                                                                       :> (ZLocalUser
                                                                                                                                                                                                           :> (ZClient
                                                                                                                                                                                                               :> ("conversations"
                                                                                                                                                                                                                   :> (QualifiedCapture
                                                                                                                                                                                                                         "cnv"
                                                                                                                                                                                                                         ConvId
                                                                                                                                                                                                                       :> ("subconversations"
                                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                                 "subconv"
                                                                                                                                                                                                                                 SubConvId
                                                                                                                                                                                                                               :> ("self"
                                                                                                                                                                                                                                   :> MultiVerb
                                                                                                                                                                                                                                        'DELETE
                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                        '[RespondEmpty
                                                                                                                                                                                                                                            200
                                                                                                                                                                                                                                            "OK"]
                                                                                                                                                                                                                                        ()))))))))))))))))
                                                                                                                                                                    :<|> (Named
                                                                                                                                                                            "delete-subconversation"
                                                                                                                                                                            (Summary
                                                                                                                                                                               "Delete an MLS subconversation"
                                                                                                                                                                             :> (From
                                                                                                                                                                                   'V5
                                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                                       'Galley
                                                                                                                                                                                       "delete-sub-conversation"
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           'ConvAccessDenied
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               'ConvNotFound
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   'MLSNotEnabled
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       'MLSStaleMessage
                                                                                                                                                                                                     :> (ZLocalUser
                                                                                                                                                                                                         :> ("conversations"
                                                                                                                                                                                                             :> (QualifiedCapture
                                                                                                                                                                                                                   "cnv"
                                                                                                                                                                                                                   ConvId
                                                                                                                                                                                                                 :> ("subconversations"
                                                                                                                                                                                                                     :> (Capture
                                                                                                                                                                                                                           "subconv"
                                                                                                                                                                                                                           SubConvId
                                                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                               DeleteSubConversationRequest
                                                                                                                                                                                                                             :> MultiVerb
                                                                                                                                                                                                                                  'DELETE
                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                  '[Respond
                                                                                                                                                                                                                                      200
                                                                                                                                                                                                                                      "Deletion successful"
                                                                                                                                                                                                                                      ()]
                                                                                                                                                                                                                                  ())))))))))))))
                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                  "get-subconversation-group-info"
                                                                                                                                                                                  (Summary
                                                                                                                                                                                     "Get MLS group information of subconversation"
                                                                                                                                                                                   :> (From
                                                                                                                                                                                         'V5
                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                             'Galley
                                                                                                                                                                                             "query-group-info"
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'ConvNotFound
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'MLSMissingGroupInfo
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'MLSNotEnabled
                                                                                                                                                                                                       :> (ZLocalUser
                                                                                                                                                                                                           :> ("conversations"
                                                                                                                                                                                                               :> (QualifiedCapture
                                                                                                                                                                                                                     "cnv"
                                                                                                                                                                                                                     ConvId
                                                                                                                                                                                                                   :> ("subconversations"
                                                                                                                                                                                                                       :> (Capture
                                                                                                                                                                                                                             "subconv"
                                                                                                                                                                                                                             SubConvId
                                                                                                                                                                                                                           :> ("groupinfo"
                                                                                                                                                                                                                               :> MultiVerb
                                                                                                                                                                                                                                    'GET
                                                                                                                                                                                                                                    '[MLS]
                                                                                                                                                                                                                                    '[Respond
                                                                                                                                                                                                                                        200
                                                                                                                                                                                                                                        "The group information"
                                                                                                                                                                                                                                        GroupInfoData]
                                                                                                                                                                                                                                    GroupInfoData))))))))))))
                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                        "create-one-to-one-conversation@v2"
                                                                                                                                                                                        (Summary
                                                                                                                                                                                           "Create a 1:1 conversation"
                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                               'Brig
                                                                                                                                                                                               "api-version"
                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                   'Galley
                                                                                                                                                                                                   "on-conversation-created"
                                                                                                                                                                                                 :> (Until
                                                                                                                                                                                                       'V3
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           'ConvAccessDenied
                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                               'InvalidOperation
                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                   'NoBindingTeamMembers
                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                       'NonBindingTeam
                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                               'NotConnected
                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                   OperationDenied
                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                           'MissingLegalholdConsent
                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                               UnreachableBackendsLegacy
                                                                                                                                                                                                                                             :> (ZLocalUser
                                                                                                                                                                                                                                                 :> (ZConn
                                                                                                                                                                                                                                                     :> ("conversations"
                                                                                                                                                                                                                                                         :> ("one2one"
                                                                                                                                                                                                                                                             :> (VersionedReqBody
                                                                                                                                                                                                                                                                   'V2
                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                   NewConv
                                                                                                                                                                                                                                                                 :> MultiVerb
                                                                                                                                                                                                                                                                      'POST
                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                      '[WithHeaders
                                                                                                                                                                                                                                                                          ConversationHeaders
                                                                                                                                                                                                                                                                          Conversation
                                                                                                                                                                                                                                                                          (VersionedRespond
                                                                                                                                                                                                                                                                             'V2
                                                                                                                                                                                                                                                                             200
                                                                                                                                                                                                                                                                             "Conversation existed"
                                                                                                                                                                                                                                                                             Conversation),
                                                                                                                                                                                                                                                                        WithHeaders
                                                                                                                                                                                                                                                                          ConversationHeaders
                                                                                                                                                                                                                                                                          Conversation
                                                                                                                                                                                                                                                                          (VersionedRespond
                                                                                                                                                                                                                                                                             'V2
                                                                                                                                                                                                                                                                             201
                                                                                                                                                                                                                                                                             "Conversation created"
                                                                                                                                                                                                                                                                             Conversation)]
                                                                                                                                                                                                                                                                      (ResponseForExistedCreated
                                                                                                                                                                                                                                                                         Conversation))))))))))))))))))))
                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                              "create-one-to-one-conversation"
                                                                                                                                                                                              (Summary
                                                                                                                                                                                                 "Create a 1:1 conversation"
                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                     'Galley
                                                                                                                                                                                                     "on-conversation-created"
                                                                                                                                                                                                   :> (From
                                                                                                                                                                                                         'V3
                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                             'ConvAccessDenied
                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                 'InvalidOperation
                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                     'NoBindingTeamMembers
                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                         'NonBindingTeam
                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                 'NotConnected
                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                             'MissingLegalholdConsent
                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                 UnreachableBackendsLegacy
                                                                                                                                                                                                                                               :> (ZLocalUser
                                                                                                                                                                                                                                                   :> (ZConn
                                                                                                                                                                                                                                                       :> ("conversations"
                                                                                                                                                                                                                                                           :> ("one2one"
                                                                                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                     NewConv
                                                                                                                                                                                                                                                                   :> MultiVerb
                                                                                                                                                                                                                                                                        'POST
                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                        '[WithHeaders
                                                                                                                                                                                                                                                                            ConversationHeaders
                                                                                                                                                                                                                                                                            Conversation
                                                                                                                                                                                                                                                                            (VersionedRespond
                                                                                                                                                                                                                                                                               'V3
                                                                                                                                                                                                                                                                               200
                                                                                                                                                                                                                                                                               "Conversation existed"
                                                                                                                                                                                                                                                                               Conversation),
                                                                                                                                                                                                                                                                          WithHeaders
                                                                                                                                                                                                                                                                            ConversationHeaders
                                                                                                                                                                                                                                                                            Conversation
                                                                                                                                                                                                                                                                            (VersionedRespond
                                                                                                                                                                                                                                                                               'V3
                                                                                                                                                                                                                                                                               201
                                                                                                                                                                                                                                                                               "Conversation created"
                                                                                                                                                                                                                                                                               Conversation)]
                                                                                                                                                                                                                                                                        (ResponseForExistedCreated
                                                                                                                                                                                                                                                                           Conversation)))))))))))))))))))
                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                    "get-one-to-one-mls-conversation@v5"
                                                                                                                                                                                                    (Summary
                                                                                                                                                                                                       "Get an MLS 1:1 conversation"
                                                                                                                                                                                                     :> (From
                                                                                                                                                                                                           'V5
                                                                                                                                                                                                         :> (Until
                                                                                                                                                                                                               'V6
                                                                                                                                                                                                             :> (ZLocalUser
                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                       'MLSNotEnabled
                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                           'NotConnected
                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                               'MLSFederatedOne2OneNotSupported
                                                                                                                                                                                                                             :> ("conversations"
                                                                                                                                                                                                                                 :> ("one2one"
                                                                                                                                                                                                                                     :> (QualifiedCapture
                                                                                                                                                                                                                                           "usr"
                                                                                                                                                                                                                                           UserId
                                                                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                                                                              'GET
                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                              '[VersionedRespond
                                                                                                                                                                                                                                                  'V5
                                                                                                                                                                                                                                                  200
                                                                                                                                                                                                                                                  "MLS 1-1 conversation"
                                                                                                                                                                                                                                                  Conversation]
                                                                                                                                                                                                                                              Conversation))))))))))
                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                          "get-one-to-one-mls-conversation@v6"
                                                                                                                                                                                                          (Summary
                                                                                                                                                                                                             "Get an MLS 1:1 conversation"
                                                                                                                                                                                                           :> (From
                                                                                                                                                                                                                 'V6
                                                                                                                                                                                                               :> (Until
                                                                                                                                                                                                                     'V7
                                                                                                                                                                                                                   :> (ZLocalUser
                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                             'MLSNotEnabled
                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                 'NotConnected
                                                                                                                                                                                                                               :> ("conversations"
                                                                                                                                                                                                                                   :> ("one2one"
                                                                                                                                                                                                                                       :> (QualifiedCapture
                                                                                                                                                                                                                                             "usr"
                                                                                                                                                                                                                                             UserId
                                                                                                                                                                                                                                           :> MultiVerb
                                                                                                                                                                                                                                                'GET
                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                '[Respond
                                                                                                                                                                                                                                                    200
                                                                                                                                                                                                                                                    "MLS 1-1 conversation"
                                                                                                                                                                                                                                                    (MLSOne2OneConversation
                                                                                                                                                                                                                                                       MLSPublicKey)]
                                                                                                                                                                                                                                                (MLSOne2OneConversation
                                                                                                                                                                                                                                                   MLSPublicKey))))))))))
                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                "get-one-to-one-mls-conversation"
                                                                                                                                                                                                                (Summary
                                                                                                                                                                                                                   "Get an MLS 1:1 conversation"
                                                                                                                                                                                                                 :> (From
                                                                                                                                                                                                                       'V7
                                                                                                                                                                                                                     :> (ZLocalUser
                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                               'MLSNotEnabled
                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                   'NotConnected
                                                                                                                                                                                                                                 :> ("conversations"
                                                                                                                                                                                                                                     :> ("one2one"
                                                                                                                                                                                                                                         :> (QualifiedCapture
                                                                                                                                                                                                                                               "usr"
                                                                                                                                                                                                                                               UserId
                                                                                                                                                                                                                                             :> (QueryParam
                                                                                                                                                                                                                                                   "format"
                                                                                                                                                                                                                                                   MLSPublicKeyFormat
                                                                                                                                                                                                                                                 :> MultiVerb
                                                                                                                                                                                                                                                      'GET
                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                      '[Respond
                                                                                                                                                                                                                                                          200
                                                                                                                                                                                                                                                          "MLS 1-1 conversation"
                                                                                                                                                                                                                                                          (MLSOne2OneConversation
                                                                                                                                                                                                                                                             SomeKey)]
                                                                                                                                                                                                                                                      (MLSOne2OneConversation
                                                                                                                                                                                                                                                         SomeKey))))))))))
                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                      "add-members-to-conversation-unqualified"
                                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                                         "Add members to an existing conversation (deprecated)"
                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                             'Galley
                                                                                                                                                                                                                             "on-conversation-updated"
                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                 'Galley
                                                                                                                                                                                                                                 "on-mls-message-sent"
                                                                                                                                                                                                                               :> (Until
                                                                                                                                                                                                                                     'V2
                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                         ('ActionDenied
                                                                                                                                                                                                                                            'AddConversationMember)
                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                             ('ActionDenied
                                                                                                                                                                                                                                                'LeaveConversation)
                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                 'ConvNotFound
                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                     'InvalidOperation
                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                         'TooManyMembers
                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                             'ConvAccessDenied
                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                     'NotConnected
                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                         'MissingLegalholdConsent
                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                             NonFederatingBackends
                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                 UnreachableBackends
                                                                                                                                                                                                                                                                               :> (ZLocalUser
                                                                                                                                                                                                                                                                                   :> (ZConn
                                                                                                                                                                                                                                                                                       :> ("conversations"
                                                                                                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                                                                                                 "cnv"
                                                                                                                                                                                                                                                                                                 ConvId
                                                                                                                                                                                                                                                                                               :> ("members"
                                                                                                                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                         Invite
                                                                                                                                                                                                                                                                                                       :> MultiVerb
                                                                                                                                                                                                                                                                                                            'POST
                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                            ConvUpdateResponses
                                                                                                                                                                                                                                                                                                            (UpdateResult
                                                                                                                                                                                                                                                                                                               Event))))))))))))))))))))))
                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                            "add-members-to-conversation-unqualified2"
                                                                                                                                                                                                                            (Summary
                                                                                                                                                                                                                               "Add qualified members to an existing conversation."
                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                   'Galley
                                                                                                                                                                                                                                   "on-conversation-updated"
                                                                                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                                                                                       'Galley
                                                                                                                                                                                                                                       "on-mls-message-sent"
                                                                                                                                                                                                                                     :> (Until
                                                                                                                                                                                                                                           'V2
                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                               ('ActionDenied
                                                                                                                                                                                                                                                  'AddConversationMember)
                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                   ('ActionDenied
                                                                                                                                                                                                                                                      'LeaveConversation)
                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                       'ConvNotFound
                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                           'InvalidOperation
                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                               'TooManyMembers
                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                   'ConvAccessDenied
                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                           'NotConnected
                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                               'MissingLegalholdConsent
                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                   NonFederatingBackends
                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                       UnreachableBackends
                                                                                                                                                                                                                                                                                     :> (ZLocalUser
                                                                                                                                                                                                                                                                                         :> (ZConn
                                                                                                                                                                                                                                                                                             :> ("conversations"
                                                                                                                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                                                                                                                       "cnv"
                                                                                                                                                                                                                                                                                                       ConvId
                                                                                                                                                                                                                                                                                                     :> ("members"
                                                                                                                                                                                                                                                                                                         :> ("v2"
                                                                                                                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                                   InviteQualified
                                                                                                                                                                                                                                                                                                                 :> MultiVerb
                                                                                                                                                                                                                                                                                                                      'POST
                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                      ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                      (UpdateResult
                                                                                                                                                                                                                                                                                                                         Event)))))))))))))))))))))))
                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                  "add-members-to-conversation"
                                                                                                                                                                                                                                  (Summary
                                                                                                                                                                                                                                     "Add qualified members to an existing conversation."
                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                         'Galley
                                                                                                                                                                                                                                         "on-conversation-updated"
                                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                                             'Galley
                                                                                                                                                                                                                                             "on-mls-message-sent"
                                                                                                                                                                                                                                           :> (From
                                                                                                                                                                                                                                                 'V2
                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                     ('ActionDenied
                                                                                                                                                                                                                                                        'AddConversationMember)
                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                         ('ActionDenied
                                                                                                                                                                                                                                                            'LeaveConversation)
                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                             'ConvNotFound
                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                 'InvalidOperation
                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                     'TooManyMembers
                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                         'ConvAccessDenied
                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                 'NotConnected
                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                     'MissingLegalholdConsent
                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                         NonFederatingBackends
                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                             UnreachableBackends
                                                                                                                                                                                                                                                                                           :> (ZLocalUser
                                                                                                                                                                                                                                                                                               :> (ZConn
                                                                                                                                                                                                                                                                                                   :> ("conversations"
                                                                                                                                                                                                                                                                                                       :> (QualifiedCapture
                                                                                                                                                                                                                                                                                                             "cnv"
                                                                                                                                                                                                                                                                                                             ConvId
                                                                                                                                                                                                                                                                                                           :> ("members"
                                                                                                                                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                     InviteQualified
                                                                                                                                                                                                                                                                                                                   :> MultiVerb
                                                                                                                                                                                                                                                                                                                        'POST
                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                        ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                        (UpdateResult
                                                                                                                                                                                                                                                                                                                           Event))))))))))))))))))))))
                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                        "join-conversation-by-id-unqualified"
                                                                                                                                                                                                                                        (Summary
                                                                                                                                                                                                                                           "Join a conversation by its ID (if link access enabled) (deprecated)"
                                                                                                                                                                                                                                         :> (Until
                                                                                                                                                                                                                                               'V5
                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                   'Galley
                                                                                                                                                                                                                                                   "on-conversation-updated"
                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                       'ConvAccessDenied
                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                           'ConvNotFound
                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                               'InvalidOperation
                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                       'TooManyMembers
                                                                                                                                                                                                                                                                     :> (ZLocalUser
                                                                                                                                                                                                                                                                         :> (ZConn
                                                                                                                                                                                                                                                                             :> ("conversations"
                                                                                                                                                                                                                                                                                 :> (Capture'
                                                                                                                                                                                                                                                                                       '[Description
                                                                                                                                                                                                                                                                                           "Conversation ID"]
                                                                                                                                                                                                                                                                                       "cnv"
                                                                                                                                                                                                                                                                                       ConvId
                                                                                                                                                                                                                                                                                     :> ("join"
                                                                                                                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                                                                                                                              'POST
                                                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                                                              ConvJoinResponses
                                                                                                                                                                                                                                                                                              (UpdateResult
                                                                                                                                                                                                                                                                                                 Event))))))))))))))
                                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                                              "join-conversation-by-code-unqualified"
                                                                                                                                                                                                                                              (Summary
                                                                                                                                                                                                                                                 "Join a conversation using a reusable code"
                                                                                                                                                                                                                                               :> (Description
                                                                                                                                                                                                                                                     "If the guest links team feature is disabled, this will fail with 409 GuestLinksDisabled.Note that this is currently inconsistent (for backwards compatibility reasons) with `POST /conversations/code-check` which responds with 404 CodeNotFound if guest links are disabled."
                                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                                         'Galley
                                                                                                                                                                                                                                                         "on-conversation-updated"
                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                             'CodeNotFound
                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                 'InvalidConversationPassword
                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                     'ConvAccessDenied
                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                         'ConvNotFound
                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                             'GuestLinksDisabled
                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                 'InvalidOperation
                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                         'TooManyMembers
                                                                                                                                                                                                                                                                                       :> (ZLocalUser
                                                                                                                                                                                                                                                                                           :> (ZConn
                                                                                                                                                                                                                                                                                               :> ("conversations"
                                                                                                                                                                                                                                                                                                   :> ("join"
                                                                                                                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                             JoinConversationByCode
                                                                                                                                                                                                                                                                                                           :> MultiVerb
                                                                                                                                                                                                                                                                                                                'POST
                                                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                                                ConvJoinResponses
                                                                                                                                                                                                                                                                                                                (UpdateResult
                                                                                                                                                                                                                                                                                                                   Event)))))))))))))))))
                                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                                    "code-check"
                                                                                                                                                                                                                                                    (Summary
                                                                                                                                                                                                                                                       "Check validity of a conversation code."
                                                                                                                                                                                                                                                     :> (Description
                                                                                                                                                                                                                                                           "If the guest links team feature is disabled, this will fail with 404 CodeNotFound.Note that this is currently inconsistent (for backwards compatibility reasons) with `POST /conversations/join` which responds with 409 GuestLinksDisabled if guest links are disabled."
                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                               'CodeNotFound
                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                   'ConvNotFound
                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                       'InvalidConversationPassword
                                                                                                                                                                                                                                                                     :> ("conversations"
                                                                                                                                                                                                                                                                         :> ("code-check"
                                                                                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                   ConversationCode
                                                                                                                                                                                                                                                                                 :> MultiVerb
                                                                                                                                                                                                                                                                                      'POST
                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                      '[RespondEmpty
                                                                                                                                                                                                                                                                                          200
                                                                                                                                                                                                                                                                                          "Valid"]
                                                                                                                                                                                                                                                                                      ()))))))))
                                                                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                                                                          "create-conversation-code-unqualified@v3"
                                                                                                                                                                                                                                                          (Summary
                                                                                                                                                                                                                                                             "Create or recreate a conversation code"
                                                                                                                                                                                                                                                           :> (Until
                                                                                                                                                                                                                                                                 'V4
                                                                                                                                                                                                                                                               :> (DescriptionOAuthScope
                                                                                                                                                                                                                                                                     'WriteConversationsCode
                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                         'ConvAccessDenied
                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                             'ConvNotFound
                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                 'GuestLinksDisabled
                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                     'CreateConversationCodeConflict
                                                                                                                                                                                                                                                                                   :> (ZUser
                                                                                                                                                                                                                                                                                       :> (ZHostOpt
                                                                                                                                                                                                                                                                                           :> (ZOptConn
                                                                                                                                                                                                                                                                                               :> ("conversations"
                                                                                                                                                                                                                                                                                                   :> (Capture'
                                                                                                                                                                                                                                                                                                         '[Description
                                                                                                                                                                                                                                                                                                             "Conversation ID"]
                                                                                                                                                                                                                                                                                                         "cnv"
                                                                                                                                                                                                                                                                                                         ConvId
                                                                                                                                                                                                                                                                                                       :> ("code"
                                                                                                                                                                                                                                                                                                           :> CreateConversationCodeVerb)))))))))))))
                                                                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                                                                "create-conversation-code-unqualified"
                                                                                                                                                                                                                                                                (Summary
                                                                                                                                                                                                                                                                   "Create or recreate a conversation code"
                                                                                                                                                                                                                                                                 :> (From
                                                                                                                                                                                                                                                                       'V4
                                                                                                                                                                                                                                                                     :> (DescriptionOAuthScope
                                                                                                                                                                                                                                                                           'WriteConversationsCode
                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                               'ConvAccessDenied
                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                   'ConvNotFound
                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                       'GuestLinksDisabled
                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                           'CreateConversationCodeConflict
                                                                                                                                                                                                                                                                                         :> (ZUser
                                                                                                                                                                                                                                                                                             :> (ZHostOpt
                                                                                                                                                                                                                                                                                                 :> (ZOptConn
                                                                                                                                                                                                                                                                                                     :> ("conversations"
                                                                                                                                                                                                                                                                                                         :> (Capture'
                                                                                                                                                                                                                                                                                                               '[Description
                                                                                                                                                                                                                                                                                                                   "Conversation ID"]
                                                                                                                                                                                                                                                                                                               "cnv"
                                                                                                                                                                                                                                                                                                               ConvId
                                                                                                                                                                                                                                                                                                             :> ("code"
                                                                                                                                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                       CreateConversationCodeRequest
                                                                                                                                                                                                                                                                                                                     :> CreateConversationCodeVerb))))))))))))))
                                                                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                                                                      "get-conversation-guest-links-status"
                                                                                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                                                                                         "Get the status of the guest links feature for a conversation that potentially has been created by someone from another team."
                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                             'ConvAccessDenied
                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                 'ConvNotFound
                                                                                                                                                                                                                                                                               :> (ZUser
                                                                                                                                                                                                                                                                                   :> ("conversations"
                                                                                                                                                                                                                                                                                       :> (Capture'
                                                                                                                                                                                                                                                                                             '[Description
                                                                                                                                                                                                                                                                                                 "Conversation ID"]
                                                                                                                                                                                                                                                                                             "cnv"
                                                                                                                                                                                                                                                                                             ConvId
                                                                                                                                                                                                                                                                                           :> ("features"
                                                                                                                                                                                                                                                                                               :> ("conversationGuestLinks"
                                                                                                                                                                                                                                                                                                   :> Get
                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                                                                                                                           GuestLinksConfig)))))))))
                                                                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                                                                            "remove-code-unqualified"
                                                                                                                                                                                                                                                                            (Summary
                                                                                                                                                                                                                                                                               "Delete conversation code"
                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                   'ConvAccessDenied
                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                       'ConvNotFound
                                                                                                                                                                                                                                                                                     :> (ZLocalUser
                                                                                                                                                                                                                                                                                         :> (ZConn
                                                                                                                                                                                                                                                                                             :> ("conversations"
                                                                                                                                                                                                                                                                                                 :> (Capture'
                                                                                                                                                                                                                                                                                                       '[Description
                                                                                                                                                                                                                                                                                                           "Conversation ID"]
                                                                                                                                                                                                                                                                                                       "cnv"
                                                                                                                                                                                                                                                                                                       ConvId
                                                                                                                                                                                                                                                                                                     :> ("code"
                                                                                                                                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                                                                                                                                              'DELETE
                                                                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                                                                              '[Respond
                                                                                                                                                                                                                                                                                                                  200
                                                                                                                                                                                                                                                                                                                  "Conversation code deleted."
                                                                                                                                                                                                                                                                                                                  Event]
                                                                                                                                                                                                                                                                                                              Event))))))))
                                                                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                                                                  "get-code"
                                                                                                                                                                                                                                                                                  (Summary
                                                                                                                                                                                                                                                                                     "Get existing conversation code"
                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                         'CodeNotFound
                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                             'ConvAccessDenied
                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                 'ConvNotFound
                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                     'GuestLinksDisabled
                                                                                                                                                                                                                                                                                                   :> (ZHostOpt
                                                                                                                                                                                                                                                                                                       :> (ZLocalUser
                                                                                                                                                                                                                                                                                                           :> ("conversations"
                                                                                                                                                                                                                                                                                                               :> (Capture'
                                                                                                                                                                                                                                                                                                                     '[Description
                                                                                                                                                                                                                                                                                                                         "Conversation ID"]
                                                                                                                                                                                                                                                                                                                     "cnv"
                                                                                                                                                                                                                                                                                                                     ConvId
                                                                                                                                                                                                                                                                                                                   :> ("code"
                                                                                                                                                                                                                                                                                                                       :> MultiVerb
                                                                                                                                                                                                                                                                                                                            'GET
                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                            '[Respond
                                                                                                                                                                                                                                                                                                                                200
                                                                                                                                                                                                                                                                                                                                "Conversation Code"
                                                                                                                                                                                                                                                                                                                                ConversationCodeInfo]
                                                                                                                                                                                                                                                                                                                            ConversationCodeInfo))))))))))
                                                                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                                                                        "member-typing-unqualified"
                                                                                                                                                                                                                                                                                        (Summary
                                                                                                                                                                                                                                                                                           "Sending typing notifications"
                                                                                                                                                                                                                                                                                         :> (Until
                                                                                                                                                                                                                                                                                               'V3
                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                   'Galley
                                                                                                                                                                                                                                                                                                   "update-typing-indicator"
                                                                                                                                                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                       'Galley
                                                                                                                                                                                                                                                                                                       "on-typing-indicator-updated"
                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                           'ConvNotFound
                                                                                                                                                                                                                                                                                                         :> (ZLocalUser
                                                                                                                                                                                                                                                                                                             :> (ZConn
                                                                                                                                                                                                                                                                                                                 :> ("conversations"
                                                                                                                                                                                                                                                                                                                     :> (Capture'
                                                                                                                                                                                                                                                                                                                           '[Description
                                                                                                                                                                                                                                                                                                                               "Conversation ID"]
                                                                                                                                                                                                                                                                                                                           "cnv"
                                                                                                                                                                                                                                                                                                                           ConvId
                                                                                                                                                                                                                                                                                                                         :> ("typing"
                                                                                                                                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                                                   TypingStatus
                                                                                                                                                                                                                                                                                                                                 :> MultiVerb
                                                                                                                                                                                                                                                                                                                                      'POST
                                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                                      '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                          200
                                                                                                                                                                                                                                                                                                                                          "Notification sent"]
                                                                                                                                                                                                                                                                                                                                      ())))))))))))
                                                                                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                                                                                              "member-typing-qualified"
                                                                                                                                                                                                                                                                                              (Summary
                                                                                                                                                                                                                                                                                                 "Sending typing notifications"
                                                                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                     'Galley
                                                                                                                                                                                                                                                                                                     "update-typing-indicator"
                                                                                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                         'Galley
                                                                                                                                                                                                                                                                                                         "on-typing-indicator-updated"
                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                             'ConvNotFound
                                                                                                                                                                                                                                                                                                           :> (ZLocalUser
                                                                                                                                                                                                                                                                                                               :> (ZConn
                                                                                                                                                                                                                                                                                                                   :> ("conversations"
                                                                                                                                                                                                                                                                                                                       :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                             '[Description
                                                                                                                                                                                                                                                                                                                                 "Conversation ID"]
                                                                                                                                                                                                                                                                                                                             "cnv"
                                                                                                                                                                                                                                                                                                                             ConvId
                                                                                                                                                                                                                                                                                                                           :> ("typing"
                                                                                                                                                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                     TypingStatus
                                                                                                                                                                                                                                                                                                                                   :> MultiVerb
                                                                                                                                                                                                                                                                                                                                        'POST
                                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                                        '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                            200
                                                                                                                                                                                                                                                                                                                                            "Notification sent"]
                                                                                                                                                                                                                                                                                                                                        ()))))))))))
                                                                                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                                                                                    "remove-member-unqualified"
                                                                                                                                                                                                                                                                                                    (Summary
                                                                                                                                                                                                                                                                                                       "Remove a member from a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                           'Galley
                                                                                                                                                                                                                                                                                                           "leave-conversation"
                                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                               'Galley
                                                                                                                                                                                                                                                                                                               "on-conversation-updated"
                                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                   'Galley
                                                                                                                                                                                                                                                                                                                   "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                       'Brig
                                                                                                                                                                                                                                                                                                                       "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                     :> (Until
                                                                                                                                                                                                                                                                                                                           'V2
                                                                                                                                                                                                                                                                                                                         :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                             :> (ZConn
                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                       ('ActionDenied
                                                                                                                                                                                                                                                                                                                                          'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                           'ConvNotFound
                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                               'InvalidOperation
                                                                                                                                                                                                                                                                                                                                             :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                 :> (Capture'
                                                                                                                                                                                                                                                                                                                                                       '[Description
                                                                                                                                                                                                                                                                                                                                                           "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                       "cnv"
                                                                                                                                                                                                                                                                                                                                                       ConvId
                                                                                                                                                                                                                                                                                                                                                     :> ("members"
                                                                                                                                                                                                                                                                                                                                                         :> (Capture'
                                                                                                                                                                                                                                                                                                                                                               '[Description
                                                                                                                                                                                                                                                                                                                                                                   "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                               "usr"
                                                                                                                                                                                                                                                                                                                                                               UserId
                                                                                                                                                                                                                                                                                                                                                             :> RemoveFromConversationVerb)))))))))))))))
                                                                                                                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                                                                                                                          "remove-member"
                                                                                                                                                                                                                                                                                                          (Summary
                                                                                                                                                                                                                                                                                                             "Remove a member from a conversation"
                                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                 'Galley
                                                                                                                                                                                                                                                                                                                 "leave-conversation"
                                                                                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                     'Galley
                                                                                                                                                                                                                                                                                                                     "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                         'Galley
                                                                                                                                                                                                                                                                                                                         "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                             'Brig
                                                                                                                                                                                                                                                                                                                             "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                           :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                               :> (ZConn
                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                         ('ActionDenied
                                                                                                                                                                                                                                                                                                                                            'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                             'ConvNotFound
                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                 'InvalidOperation
                                                                                                                                                                                                                                                                                                                                               :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                   :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                         '[Description
                                                                                                                                                                                                                                                                                                                                                             "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                         "cnv"
                                                                                                                                                                                                                                                                                                                                                         ConvId
                                                                                                                                                                                                                                                                                                                                                       :> ("members"
                                                                                                                                                                                                                                                                                                                                                           :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                 '[Description
                                                                                                                                                                                                                                                                                                                                                                     "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                 "usr"
                                                                                                                                                                                                                                                                                                                                                                 UserId
                                                                                                                                                                                                                                                                                                                                                               :> RemoveFromConversationVerb))))))))))))))
                                                                                                                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                                                                                                                "update-other-member-unqualified"
                                                                                                                                                                                                                                                                                                                (Summary
                                                                                                                                                                                                                                                                                                                   "Update membership of the specified user (deprecated)"
                                                                                                                                                                                                                                                                                                                 :> (Deprecated
                                                                                                                                                                                                                                                                                                                     :> (Description
                                                                                                                                                                                                                                                                                                                           "Use `PUT /conversations/:cnv_domain/:cnv/members/:usr_domain/:usr` instead"
                                                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                               'Galley
                                                                                                                                                                                                                                                                                                                               "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                   'Galley
                                                                                                                                                                                                                                                                                                                                   "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                       'Brig
                                                                                                                                                                                                                                                                                                                                       "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                     :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                         :> (ZConn
                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                   'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                       'ConvMemberNotFound
                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                           ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                              'ModifyOtherConversationMember)
                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                               'InvalidTarget
                                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                   'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                 :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                     :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                           '[Description
                                                                                                                                                                                                                                                                                                                                                                               "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                           "cnv"
                                                                                                                                                                                                                                                                                                                                                                           ConvId
                                                                                                                                                                                                                                                                                                                                                                         :> ("members"
                                                                                                                                                                                                                                                                                                                                                                             :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                   '[Description
                                                                                                                                                                                                                                                                                                                                                                                       "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                                   "usr"
                                                                                                                                                                                                                                                                                                                                                                                   UserId
                                                                                                                                                                                                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                       OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                     :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                          'PUT
                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                          '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                              200
                                                                                                                                                                                                                                                                                                                                                                                              "Membership updated"]
                                                                                                                                                                                                                                                                                                                                                                                          ()))))))))))))))))))
                                                                                                                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                                                                                                                      "update-other-member"
                                                                                                                                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                                                                                                                                         "Update membership of the specified user"
                                                                                                                                                                                                                                                                                                                       :> (Description
                                                                                                                                                                                                                                                                                                                             "**Note**: at least one field has to be provided."
                                                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                 'Galley
                                                                                                                                                                                                                                                                                                                                 "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                     'Galley
                                                                                                                                                                                                                                                                                                                                     "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                         'Brig
                                                                                                                                                                                                                                                                                                                                         "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                       :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                           :> (ZConn
                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                     'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                         'ConvMemberNotFound
                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                             ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                'ModifyOtherConversationMember)
                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                 'InvalidTarget
                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                     'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                   :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                       :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                             '[Description
                                                                                                                                                                                                                                                                                                                                                                                 "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                             "cnv"
                                                                                                                                                                                                                                                                                                                                                                             ConvId
                                                                                                                                                                                                                                                                                                                                                                           :> ("members"
                                                                                                                                                                                                                                                                                                                                                                               :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                     '[Description
                                                                                                                                                                                                                                                                                                                                                                                         "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                                     "usr"
                                                                                                                                                                                                                                                                                                                                                                                     UserId
                                                                                                                                                                                                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                         OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                       :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                            'PUT
                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                            '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                                200
                                                                                                                                                                                                                                                                                                                                                                                                "Membership updated"]
                                                                                                                                                                                                                                                                                                                                                                                            ())))))))))))))))))
                                                                                                                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                                                                                                                            "update-conversation-name-deprecated"
                                                                                                                                                                                                                                                                                                                            (Summary
                                                                                                                                                                                                                                                                                                                               "Update conversation name (deprecated)"
                                                                                                                                                                                                                                                                                                                             :> (Deprecated
                                                                                                                                                                                                                                                                                                                                 :> (Description
                                                                                                                                                                                                                                                                                                                                       "Use `/conversations/:domain/:conv/name` instead."
                                                                                                                                                                                                                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                           'Galley
                                                                                                                                                                                                                                                                                                                                           "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                               'Galley
                                                                                                                                                                                                                                                                                                                                               "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                   'Brig
                                                                                                                                                                                                                                                                                                                                                   "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                       ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                          'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                           'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                               'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                             :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                 :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                     :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                         :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                               '[Description
                                                                                                                                                                                                                                                                                                                                                                                   "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                               "cnv"
                                                                                                                                                                                                                                                                                                                                                                               ConvId
                                                                                                                                                                                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                   ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                 :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                      'PUT
                                                                                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                      (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                         "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                         "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                         Event)
                                                                                                                                                                                                                                                                                                                                                                                      (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                         Event)))))))))))))))
                                                                                                                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                                                                                                                  "update-conversation-name-unqualified"
                                                                                                                                                                                                                                                                                                                                  (Summary
                                                                                                                                                                                                                                                                                                                                     "Update conversation name (deprecated)"
                                                                                                                                                                                                                                                                                                                                   :> (Deprecated
                                                                                                                                                                                                                                                                                                                                       :> (Description
                                                                                                                                                                                                                                                                                                                                             "Use `/conversations/:domain/:conv/name` instead."
                                                                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                 'Galley
                                                                                                                                                                                                                                                                                                                                                 "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                     'Galley
                                                                                                                                                                                                                                                                                                                                                     "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                         'Brig
                                                                                                                                                                                                                                                                                                                                                         "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                             ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                 'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                     'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                   :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                       :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                           :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                               :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                     '[Description
                                                                                                                                                                                                                                                                                                                                                                                         "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                     "cnv"
                                                                                                                                                                                                                                                                                                                                                                                     ConvId
                                                                                                                                                                                                                                                                                                                                                                                   :> ("name"
                                                                                                                                                                                                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                             ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                           :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                'PUT
                                                                                                                                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                   "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                   "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                                   Event)
                                                                                                                                                                                                                                                                                                                                                                                                (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                   Event))))))))))))))))
                                                                                                                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                                                                                                                        "update-conversation-name"
                                                                                                                                                                                                                                                                                                                                        (Summary
                                                                                                                                                                                                                                                                                                                                           "Update conversation name"
                                                                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                               'Galley
                                                                                                                                                                                                                                                                                                                                               "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                   'Galley
                                                                                                                                                                                                                                                                                                                                                   "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                       'Brig
                                                                                                                                                                                                                                                                                                                                                       "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                           ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                              'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                               'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                   'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                 :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                     :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                         :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                             :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                   '[Description
                                                                                                                                                                                                                                                                                                                                                                                       "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                   "cnv"
                                                                                                                                                                                                                                                                                                                                                                                   ConvId
                                                                                                                                                                                                                                                                                                                                                                                 :> ("name"
                                                                                                                                                                                                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                           ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                              'PUT
                                                                                                                                                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                              (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                 "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                                 "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                 Event)
                                                                                                                                                                                                                                                                                                                                                                                              (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                 Event))))))))))))))
                                                                                                                                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                                                                                                                                              "update-conversation-message-timer-unqualified"
                                                                                                                                                                                                                                                                                                                                              (Summary
                                                                                                                                                                                                                                                                                                                                                 "Update the message timer for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                               :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                   :> (Description
                                                                                                                                                                                                                                                                                                                                                         "Use `/conversations/:domain/:cnv/message-timer` instead."
                                                                                                                                                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                             'Galley
                                                                                                                                                                                                                                                                                                                                                             "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                 'Galley
                                                                                                                                                                                                                                                                                                                                                                 "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                     'Brig
                                                                                                                                                                                                                                                                                                                                                                     "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                   :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                       :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                 ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                    'ModifyConversationMessageTimer)
                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                     'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                         'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                             'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                           :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                               :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                     '[Description
                                                                                                                                                                                                                                                                                                                                                                                                         "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                     "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                     ConvId
                                                                                                                                                                                                                                                                                                                                                                                                   :> ("message-timer"
                                                                                                                                                                                                                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                             ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                                                                                           :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                   "Message timer unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                   "Message timer updated"
                                                                                                                                                                                                                                                                                                                                                                                                                   Event)
                                                                                                                                                                                                                                                                                                                                                                                                                (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                   Event)))))))))))))))))
                                                                                                                                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                                                                                                                                    "update-conversation-message-timer"
                                                                                                                                                                                                                                                                                                                                                    (Summary
                                                                                                                                                                                                                                                                                                                                                       "Update the message timer for a conversation"
                                                                                                                                                                                                                                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                           'Galley
                                                                                                                                                                                                                                                                                                                                                           "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                               'Galley
                                                                                                                                                                                                                                                                                                                                                               "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                   'Brig
                                                                                                                                                                                                                                                                                                                                                                   "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                 :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                     :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                               ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                  'ModifyConversationMessageTimer)
                                                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                   'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                       'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                           'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                         :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                             :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                   '[Description
                                                                                                                                                                                                                                                                                                                                                                                                       "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                   "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                   ConvId
                                                                                                                                                                                                                                                                                                                                                                                                 :> ("message-timer"
                                                                                                                                                                                                                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                           ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                              'PUT
                                                                                                                                                                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                              (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                 "Message timer unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                 "Message timer updated"
                                                                                                                                                                                                                                                                                                                                                                                                                 Event)
                                                                                                                                                                                                                                                                                                                                                                                                              (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                 Event)))))))))))))))
                                                                                                                                                                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                                                                                                                                                                          "update-conversation-receipt-mode-unqualified"
                                                                                                                                                                                                                                                                                                                                                          (Summary
                                                                                                                                                                                                                                                                                                                                                             "Update receipt mode for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                                           :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                               :> (Description
                                                                                                                                                                                                                                                                                                                                                                     "Use `PUT /conversations/:domain/:cnv/receipt-mode` instead."
                                                                                                                                                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                         'Galley
                                                                                                                                                                                                                                                                                                                                                                         "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                             'Galley
                                                                                                                                                                                                                                                                                                                                                                             "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                 'Galley
                                                                                                                                                                                                                                                                                                                                                                                 "update-conversation"
                                                                                                                                                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                     'Brig
                                                                                                                                                                                                                                                                                                                                                                                     "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                   :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                       :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                 ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                    'ModifyConversationReceiptMode)
                                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                     'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                         'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                             'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                           :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                               :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                     '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                         "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                     "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                     ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                   :> ("receipt-mode"
                                                                                                                                                                                                                                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                             ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                           :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                   "Receipt mode unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                   "Receipt mode updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                   Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                   Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                "update-conversation-receipt-mode"
                                                                                                                                                                                                                                                                                                                                                                (Summary
                                                                                                                                                                                                                                                                                                                                                                   "Update receipt mode for a conversation"
                                                                                                                                                                                                                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                       'Galley
                                                                                                                                                                                                                                                                                                                                                                       "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                           'Galley
                                                                                                                                                                                                                                                                                                                                                                           "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                               'Galley
                                                                                                                                                                                                                                                                                                                                                                               "update-conversation"
                                                                                                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                   'Brig
                                                                                                                                                                                                                                                                                                                                                                                   "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                 :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                     :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                               ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                  'ModifyConversationReceiptMode)
                                                                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                   'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                       'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                           'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                         :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                             :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                   '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                       "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                   "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                   ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                 :> ("receipt-mode"
                                                                                                                                                                                                                                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                           ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                              'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                              (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                 "Receipt mode unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                 "Receipt mode updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                 Event)
                                                                                                                                                                                                                                                                                                                                                                                                                              (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                 Event))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                      "update-conversation-access-unqualified"
                                                                                                                                                                                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                                                                                                                                                                                         "Update access modes for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                             'Galley
                                                                                                                                                                                                                                                                                                                                                                             "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                 'Galley
                                                                                                                                                                                                                                                                                                                                                                                 "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                     'Brig
                                                                                                                                                                                                                                                                                                                                                                                     "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                   :> (Until
                                                                                                                                                                                                                                                                                                                                                                                         'V3
                                                                                                                                                                                                                                                                                                                                                                                       :> (Description
                                                                                                                                                                                                                                                                                                                                                                                             "Use PUT `/conversations/:domain/:cnv/access` instead."
                                                                                                                                                                                                                                                                                                                                                                                           :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                               :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                         ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                            'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                             ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                 'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                     'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                         'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                             'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                           :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                               :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                                     '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                         "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                     "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                     ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                   :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                       :> (VersionedReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                             'V2
                                                                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                             ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                           :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                   "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                   "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                   Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                                (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                   Event)))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                            "update-conversation-access@v2"
                                                                                                                                                                                                                                                                                                                                                                            (Summary
                                                                                                                                                                                                                                                                                                                                                                               "Update access modes for a conversation"
                                                                                                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                   'Galley
                                                                                                                                                                                                                                                                                                                                                                                   "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                       'Galley
                                                                                                                                                                                                                                                                                                                                                                                       "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                           'Brig
                                                                                                                                                                                                                                                                                                                                                                                           "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                         :> (Until
                                                                                                                                                                                                                                                                                                                                                                                               'V3
                                                                                                                                                                                                                                                                                                                                                                                             :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                 :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                           ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                              'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                               ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                  'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                   'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                       'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                           'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                               'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                             :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                 :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                       '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                           "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                       "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                       ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                     :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                         :> (VersionedReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                               'V2
                                                                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                               ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                             :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                  'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                  (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                     "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                     "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                     Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                                  (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                     Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                  "update-conversation-access"
                                                                                                                                                                                                                                                                                                                                                                                  (Summary
                                                                                                                                                                                                                                                                                                                                                                                     "Update access modes for a conversation"
                                                                                                                                                                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                         'Galley
                                                                                                                                                                                                                                                                                                                                                                                         "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                             'Galley
                                                                                                                                                                                                                                                                                                                                                                                             "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                                 'Brig
                                                                                                                                                                                                                                                                                                                                                                                                 "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                               :> (From
                                                                                                                                                                                                                                                                                                                                                                                                     'V3
                                                                                                                                                                                                                                                                                                                                                                                                   :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                       :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                 ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                    'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                     ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                        'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                         'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                             'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                 'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                     'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                                   :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                       :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                             '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                                 "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                             "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                             ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                           :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                     ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                                   :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                        'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                        (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                           "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                           "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                           Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                                        (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                           Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                        "get-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                        (Summary
                                                                                                                                                                                                                                                                                                                                                                                           "Get self membership properties (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                                         :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                                                             :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                 :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                     :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                           '[Description
                                                                                                                                                                                                                                                                                                                                                                                                               "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                           "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                           ConvId
                                                                                                                                                                                                                                                                                                                                                                                                         :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                             :> Get
                                                                                                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                  (Maybe
                                                                                                                                                                                                                                                                                                                                                                                                                     Member)))))))
                                                                                                                                                                                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                              "update-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                              (Summary
                                                                                                                                                                                                                                                                                                                                                                                                 "Update self membership properties (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                                               :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                                                                   :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                         "Use `/conversations/:domain/:conv/self` instead."
                                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                             'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                           :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                               :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                   :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                       :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                             '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                 "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                             "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                             ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                           :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                     MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                   :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                        'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                        '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                                                                            200
                                                                                                                                                                                                                                                                                                                                                                                                                                            "Update successful"]
                                                                                                                                                                                                                                                                                                                                                                                                                                        ()))))))))))
                                                                                                                                                                                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                                    "update-conversation-self"
                                                                                                                                                                                                                                                                                                                                                                                                    (Summary
                                                                                                                                                                                                                                                                                                                                                                                                       "Update self membership properties"
                                                                                                                                                                                                                                                                                                                                                                                                     :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                           "**Note**: at least one field has to be provided."
                                                                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                               'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                             :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                                 :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                     :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                         :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                               '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                   "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                               "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                               ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                             :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                       MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                     :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                          'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                          '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                                                                              200
                                                                                                                                                                                                                                                                                                                                                                                                                                              "Update successful"]
                                                                                                                                                                                                                                                                                                                                                                                                                                          ())))))))))
                                                                                                                                                                                                                                                                                                                                                                                                  :<|> Named
                                                                                                                                                                                                                                                                                                                                                                                                         "update-conversation-protocol"
                                                                                                                                                                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                                                                                                                                                                            "Update the protocol of the conversation"
                                                                                                                                                                                                                                                                                                                                                                                                          :> (From
                                                                                                                                                                                                                                                                                                                                                                                                                'V5
                                                                                                                                                                                                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                                    "**Note**: Only proteus->mixed upgrade is supported."
                                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                            'ConvInvalidProtocolTransition
                                                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                                   'LeaveConversation)
                                                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                    'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                        'MLSMigrationCriteriaNotSatisfied
                                                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                                              :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  :> ("protocol"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ProtocolUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Event))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
       :<|> (TeamConversationAPI
             :<|> ((Named
                      "post-otr-message-unqualified"
                      (Summary
                         "Post an encrypted message to a conversation (accepts JSON or Protobuf)"
                       :> (Description PostOtrDescriptionUnqualified
                           :> (MakesFederatedCall 'Galley "on-message-sent"
                               :> (MakesFederatedCall 'Brig "get-user-clients"
                                   :> (ZLocalUser
                                       :> (ZConn
                                           :> ("conversations"
                                               :> (Capture "cnv" ConvId
                                                   :> ("otr"
                                                       :> ("messages"
                                                           :> (QueryParam
                                                                 "ignore_missing" IgnoreMissing
                                                               :> (QueryParam
                                                                     "report_missing" ReportMissing
                                                                   :> (ReqBody
                                                                         '[JSON, Proto]
                                                                         NewOtrMessage
                                                                       :> MultiVerb
                                                                            'POST
                                                                            '[JSON]
                                                                            '[ErrorResponse
                                                                                'ConvNotFound,
                                                                              ErrorResponse
                                                                                'UnknownClient,
                                                                              ErrorResponse
                                                                                'MissingLegalholdConsentOldClients,
                                                                              ErrorResponse
                                                                                'MissingLegalholdConsent,
                                                                              Respond
                                                                                412
                                                                                "Missing clients"
                                                                                ClientMismatch,
                                                                              Respond
                                                                                201
                                                                                "Message sent"
                                                                                ClientMismatch]
                                                                            (PostOtrResponse
                                                                               ClientMismatch))))))))))))))
                    :<|> (Named
                            "post-otr-broadcast-unqualified"
                            (Summary
                               "Broadcast an encrypted message to all team members and all contacts (accepts JSON or Protobuf)"
                             :> (Description PostOtrDescriptionUnqualified
                                 :> (ZLocalUser
                                     :> (ZConn
                                         :> (CanThrow 'TeamNotFound
                                             :> (CanThrow 'BroadcastLimitExceeded
                                                 :> (CanThrow 'NonBindingTeam
                                                     :> ("broadcast"
                                                         :> ("otr"
                                                             :> ("messages"
                                                                 :> (QueryParam
                                                                       "ignore_missing"
                                                                       IgnoreMissing
                                                                     :> (QueryParam
                                                                           "report_missing"
                                                                           ReportMissing
                                                                         :> (ReqBody
                                                                               '[JSON, Proto]
                                                                               NewOtrMessage
                                                                             :> MultiVerb
                                                                                  'POST
                                                                                  '[JSON]
                                                                                  '[ErrorResponse
                                                                                      'ConvNotFound,
                                                                                    ErrorResponse
                                                                                      'UnknownClient,
                                                                                    ErrorResponse
                                                                                      'MissingLegalholdConsentOldClients,
                                                                                    ErrorResponse
                                                                                      'MissingLegalholdConsent,
                                                                                    Respond
                                                                                      412
                                                                                      "Missing clients"
                                                                                      ClientMismatch,
                                                                                    Respond
                                                                                      201
                                                                                      "Message sent"
                                                                                      ClientMismatch]
                                                                                  (PostOtrResponse
                                                                                     ClientMismatch))))))))))))))
                          :<|> (Named
                                  "post-proteus-message"
                                  (Summary
                                     "Post an encrypted message to a conversation (accepts only Protobuf)"
                                   :> (Description PostOtrDescription
                                       :> (MakesFederatedCall 'Brig "get-user-clients"
                                           :> (MakesFederatedCall 'Galley "on-message-sent"
                                               :> (MakesFederatedCall 'Galley "send-message"
                                                   :> (ZLocalUser
                                                       :> (ZConn
                                                           :> ("conversations"
                                                               :> (QualifiedCapture "cnv" ConvId
                                                                   :> ("proteus"
                                                                       :> ("messages"
                                                                           :> (ReqBody
                                                                                 '[Proto]
                                                                                 (RawProto
                                                                                    QualifiedNewOtrMessage)
                                                                               :> MultiVerb
                                                                                    'POST
                                                                                    '[JSON]
                                                                                    '[ErrorResponse
                                                                                        'ConvNotFound,
                                                                                      ErrorResponse
                                                                                        'UnknownClient,
                                                                                      ErrorResponse
                                                                                        'MissingLegalholdConsentOldClients,
                                                                                      ErrorResponse
                                                                                        'MissingLegalholdConsent,
                                                                                      Respond
                                                                                        412
                                                                                        "Missing clients"
                                                                                        MessageSendingStatus,
                                                                                      Respond
                                                                                        201
                                                                                        "Message sent"
                                                                                        MessageSendingStatus]
                                                                                    (Either
                                                                                       (MessageNotSent
                                                                                          MessageSendingStatus)
                                                                                       MessageSendingStatus)))))))))))))
                                :<|> Named
                                       "post-proteus-broadcast"
                                       (Summary
                                          "Post an encrypted message to all team members and all contacts (accepts only Protobuf)"
                                        :> (Description PostOtrDescription
                                            :> (ZLocalUser
                                                :> (ZConn
                                                    :> (CanThrow 'TeamNotFound
                                                        :> (CanThrow 'BroadcastLimitExceeded
                                                            :> (CanThrow 'NonBindingTeam
                                                                :> ("broadcast"
                                                                    :> ("proteus"
                                                                        :> ("messages"
                                                                            :> (ReqBody
                                                                                  '[Proto]
                                                                                  QualifiedNewOtrMessage
                                                                                :> MultiVerb
                                                                                     'POST
                                                                                     '[JSON]
                                                                                     '[ErrorResponse
                                                                                         'ConvNotFound,
                                                                                       ErrorResponse
                                                                                         'UnknownClient,
                                                                                       ErrorResponse
                                                                                         'MissingLegalholdConsentOldClients,
                                                                                       ErrorResponse
                                                                                         'MissingLegalholdConsent,
                                                                                       Respond
                                                                                         412
                                                                                         "Missing clients"
                                                                                         MessageSendingStatus,
                                                                                       Respond
                                                                                         201
                                                                                         "Message sent"
                                                                                         MessageSendingStatus]
                                                                                     (Either
                                                                                        (MessageNotSent
                                                                                           MessageSendingStatus)
                                                                                        MessageSendingStatus)))))))))))))))
                   :<|> ((Named
                            "post-bot-message-unqualified"
                            (MakesFederatedCall 'Galley "on-message-sent"
                             :> (MakesFederatedCall 'Brig "get-user-clients"
                                 :> (ZBot
                                     :> (ZConversation
                                         :> (CanThrow 'ConvNotFound
                                             :> ("bot"
                                                 :> ("messages"
                                                     :> (QueryParam "ignore_missing" IgnoreMissing
                                                         :> (QueryParam
                                                               "report_missing" ReportMissing
                                                             :> (ReqBody '[JSON] NewOtrMessage
                                                                 :> MultiVerb
                                                                      'POST
                                                                      '[JSON]
                                                                      '[ErrorResponse 'ConvNotFound,
                                                                        ErrorResponse
                                                                          'UnknownClient,
                                                                        ErrorResponse
                                                                          'MissingLegalholdConsentOldClients,
                                                                        ErrorResponse
                                                                          'MissingLegalholdConsent,
                                                                        Respond
                                                                          412
                                                                          "Missing clients"
                                                                          ClientMismatch,
                                                                        Respond
                                                                          201
                                                                          "Message sent"
                                                                          ClientMismatch]
                                                                      (PostOtrResponse
                                                                         ClientMismatch)))))))))))
                          :<|> Named
                                 "get-bot-conversation"
                                 (CanThrow 'AccessDenied
                                  :> (CanThrow 'ConvNotFound
                                      :> (CanThrow OperationDenied
                                          :> (CanThrow 'NotATeamMember
                                              :> (CanThrow 'TeamNotFound
                                                  :> ("bot"
                                                      :> ("conversation"
                                                          :> (ZBot
                                                              :> (ZConversation
                                                                  :> Get
                                                                       '[JSON] BotConvView))))))))))
                         :<|> (TeamAPI
                               :<|> ((Named
                                        '("get", SSOConfig)
                                        (Description ""
                                         :> (ZUser
                                             :> (Summary "Get config for sso"
                                                 :> (CanThrow OperationDenied
                                                     :> (CanThrow 'NotATeamMember
                                                         :> (CanThrow 'TeamNotFound
                                                             :> ("teams"
                                                                 :> (Capture "tid" TeamId
                                                                     :> ("features"
                                                                         :> ("sso"
                                                                             :> Get
                                                                                  '[JSON]
                                                                                  (LockableFeature
                                                                                     SSOConfig)))))))))))
                                      :<|> ((Named
                                               '("get", LegalholdConfig)
                                               (Description ""
                                                :> (ZUser
                                                    :> (Summary "Get config for legalhold"
                                                        :> (CanThrow OperationDenied
                                                            :> (CanThrow 'NotATeamMember
                                                                :> (CanThrow 'TeamNotFound
                                                                    :> ("teams"
                                                                        :> (Capture "tid" TeamId
                                                                            :> ("features"
                                                                                :> ("legalhold"
                                                                                    :> Get
                                                                                         '[JSON]
                                                                                         (LockableFeature
                                                                                            LegalholdConfig)))))))))))
                                             :<|> Named
                                                    '("put", LegalholdConfig)
                                                    (Description ""
                                                     :> (ZUser
                                                         :> (Summary "Put config for legalhold"
                                                             :> (CanThrow OperationDenied
                                                                 :> (CanThrow 'NotATeamMember
                                                                     :> (CanThrow 'TeamNotFound
                                                                         :> (CanThrow
                                                                               TeamFeatureError
                                                                             :> (CanThrowMany
                                                                                   '[ 'ActionDenied
                                                                                        'RemoveConversationMember,
                                                                                      'CannotEnableLegalHoldServiceLargeTeam,
                                                                                      'LegalHoldNotEnabled,
                                                                                      'LegalHoldDisableUnimplemented,
                                                                                      'LegalHoldServiceNotRegistered,
                                                                                      'UserLegalHoldIllegalOperation,
                                                                                      'LegalHoldCouldNotBlockConnections]
                                                                                 :> ("teams"
                                                                                     :> (Capture
                                                                                           "tid"
                                                                                           TeamId
                                                                                         :> ("features"
                                                                                             :> ("legalhold"
                                                                                                 :> (ReqBody
                                                                                                       '[JSON]
                                                                                                       (Feature
                                                                                                          LegalholdConfig)
                                                                                                     :> Put
                                                                                                          '[JSON]
                                                                                                          (LockableFeature
                                                                                                             LegalholdConfig)))))))))))))))
                                            :<|> ((Named
                                                     '("get", SearchVisibilityAvailableConfig)
                                                     (Description ""
                                                      :> (ZUser
                                                          :> (Summary
                                                                "Get config for searchVisibility"
                                                              :> (CanThrow OperationDenied
                                                                  :> (CanThrow 'NotATeamMember
                                                                      :> (CanThrow 'TeamNotFound
                                                                          :> ("teams"
                                                                              :> (Capture
                                                                                    "tid" TeamId
                                                                                  :> ("features"
                                                                                      :> ("searchVisibility"
                                                                                          :> Get
                                                                                               '[JSON]
                                                                                               (LockableFeature
                                                                                                  SearchVisibilityAvailableConfig)))))))))))
                                                   :<|> Named
                                                          '("put", SearchVisibilityAvailableConfig)
                                                          (Description ""
                                                           :> (ZUser
                                                               :> (Summary
                                                                     "Put config for searchVisibility"
                                                                   :> (CanThrow OperationDenied
                                                                       :> (CanThrow 'NotATeamMember
                                                                           :> (CanThrow
                                                                                 'TeamNotFound
                                                                               :> (CanThrow
                                                                                     TeamFeatureError
                                                                                   :> (CanThrowMany
                                                                                         '[]
                                                                                       :> ("teams"
                                                                                           :> (Capture
                                                                                                 "tid"
                                                                                                 TeamId
                                                                                               :> ("features"
                                                                                                   :> ("searchVisibility"
                                                                                                       :> (ReqBody
                                                                                                             '[JSON]
                                                                                                             (Feature
                                                                                                                SearchVisibilityAvailableConfig)
                                                                                                           :> Put
                                                                                                                '[JSON]
                                                                                                                (LockableFeature
                                                                                                                   SearchVisibilityAvailableConfig)))))))))))))))
                                                  :<|> (SearchVisibilityGet
                                                        :<|> (SearchVisibilitySet
                                                              :<|> (Named
                                                                      '("get",
                                                                        ValidateSAMLEmailsConfig)
                                                                      (Description ""
                                                                       :> (ZUser
                                                                           :> (Summary
                                                                                 "Get config for validateSAMLemails"
                                                                               :> (CanThrow
                                                                                     OperationDenied
                                                                                   :> (CanThrow
                                                                                         'NotATeamMember
                                                                                       :> (CanThrow
                                                                                             'TeamNotFound
                                                                                           :> ("teams"
                                                                                               :> (Capture
                                                                                                     "tid"
                                                                                                     TeamId
                                                                                                   :> ("features"
                                                                                                       :> ("validateSAMLemails"
                                                                                                           :> Get
                                                                                                                '[JSON]
                                                                                                                (LockableFeature
                                                                                                                   ValidateSAMLEmailsConfig)))))))))))
                                                                    :<|> (Named
                                                                            '("get",
                                                                              DigitalSignaturesConfig)
                                                                            (Description ""
                                                                             :> (ZUser
                                                                                 :> (Summary
                                                                                       "Get config for digitalSignatures"
                                                                                     :> (CanThrow
                                                                                           OperationDenied
                                                                                         :> (CanThrow
                                                                                               'NotATeamMember
                                                                                             :> (CanThrow
                                                                                                   'TeamNotFound
                                                                                                 :> ("teams"
                                                                                                     :> (Capture
                                                                                                           "tid"
                                                                                                           TeamId
                                                                                                         :> ("features"
                                                                                                             :> ("digitalSignatures"
                                                                                                                 :> Get
                                                                                                                      '[JSON]
                                                                                                                      (LockableFeature
                                                                                                                         DigitalSignaturesConfig)))))))))))
                                                                          :<|> ((Named
                                                                                   '("get",
                                                                                     AppLockConfig)
                                                                                   (Description ""
                                                                                    :> (ZUser
                                                                                        :> (Summary
                                                                                              "Get config for appLock"
                                                                                            :> (CanThrow
                                                                                                  OperationDenied
                                                                                                :> (CanThrow
                                                                                                      'NotATeamMember
                                                                                                    :> (CanThrow
                                                                                                          'TeamNotFound
                                                                                                        :> ("teams"
                                                                                                            :> (Capture
                                                                                                                  "tid"
                                                                                                                  TeamId
                                                                                                                :> ("features"
                                                                                                                    :> ("appLock"
                                                                                                                        :> Get
                                                                                                                             '[JSON]
                                                                                                                             (LockableFeature
                                                                                                                                AppLockConfig)))))))))))
                                                                                 :<|> Named
                                                                                        '("put",
                                                                                          AppLockConfig)
                                                                                        (Description
                                                                                           ""
                                                                                         :> (ZUser
                                                                                             :> (Summary
                                                                                                   "Put config for appLock"
                                                                                                 :> (CanThrow
                                                                                                       OperationDenied
                                                                                                     :> (CanThrow
                                                                                                           'NotATeamMember
                                                                                                         :> (CanThrow
                                                                                                               'TeamNotFound
                                                                                                             :> (CanThrow
                                                                                                                   TeamFeatureError
                                                                                                                 :> (CanThrowMany
                                                                                                                       '[]
                                                                                                                     :> ("teams"
                                                                                                                         :> (Capture
                                                                                                                               "tid"
                                                                                                                               TeamId
                                                                                                                             :> ("features"
                                                                                                                                 :> ("appLock"
                                                                                                                                     :> (ReqBody
                                                                                                                                           '[JSON]
                                                                                                                                           (Feature
                                                                                                                                              AppLockConfig)
                                                                                                                                         :> Put
                                                                                                                                              '[JSON]
                                                                                                                                              (LockableFeature
                                                                                                                                                 AppLockConfig)))))))))))))))
                                                                                :<|> ((Named
                                                                                         '("get",
                                                                                           FileSharingConfig)
                                                                                         (Description
                                                                                            ""
                                                                                          :> (ZUser
                                                                                              :> (Summary
                                                                                                    "Get config for fileSharing"
                                                                                                  :> (CanThrow
                                                                                                        OperationDenied
                                                                                                      :> (CanThrow
                                                                                                            'NotATeamMember
                                                                                                          :> (CanThrow
                                                                                                                'TeamNotFound
                                                                                                              :> ("teams"
                                                                                                                  :> (Capture
                                                                                                                        "tid"
                                                                                                                        TeamId
                                                                                                                      :> ("features"
                                                                                                                          :> ("fileSharing"
                                                                                                                              :> Get
                                                                                                                                   '[JSON]
                                                                                                                                   (LockableFeature
                                                                                                                                      FileSharingConfig)))))))))))
                                                                                       :<|> Named
                                                                                              '("put",
                                                                                                FileSharingConfig)
                                                                                              (Description
                                                                                                 ""
                                                                                               :> (ZUser
                                                                                                   :> (Summary
                                                                                                         "Put config for fileSharing"
                                                                                                       :> (CanThrow
                                                                                                             OperationDenied
                                                                                                           :> (CanThrow
                                                                                                                 'NotATeamMember
                                                                                                               :> (CanThrow
                                                                                                                     'TeamNotFound
                                                                                                                   :> (CanThrow
                                                                                                                         TeamFeatureError
                                                                                                                       :> (CanThrowMany
                                                                                                                             '[]
                                                                                                                           :> ("teams"
                                                                                                                               :> (Capture
                                                                                                                                     "tid"
                                                                                                                                     TeamId
                                                                                                                                   :> ("features"
                                                                                                                                       :> ("fileSharing"
                                                                                                                                           :> (ReqBody
                                                                                                                                                 '[JSON]
                                                                                                                                                 (Feature
                                                                                                                                                    FileSharingConfig)
                                                                                                                                               :> Put
                                                                                                                                                    '[JSON]
                                                                                                                                                    (LockableFeature
                                                                                                                                                       FileSharingConfig)))))))))))))))
                                                                                      :<|> (Named
                                                                                              '("get",
                                                                                                ClassifiedDomainsConfig)
                                                                                              (Description
                                                                                                 ""
                                                                                               :> (ZUser
                                                                                                   :> (Summary
                                                                                                         "Get config for classifiedDomains"
                                                                                                       :> (CanThrow
                                                                                                             OperationDenied
                                                                                                           :> (CanThrow
                                                                                                                 'NotATeamMember
                                                                                                               :> (CanThrow
                                                                                                                     'TeamNotFound
                                                                                                                   :> ("teams"
                                                                                                                       :> (Capture
                                                                                                                             "tid"
                                                                                                                             TeamId
                                                                                                                           :> ("features"
                                                                                                                               :> ("classifiedDomains"
                                                                                                                                   :> Get
                                                                                                                                        '[JSON]
                                                                                                                                        (LockableFeature
                                                                                                                                           ClassifiedDomainsConfig)))))))))))
                                                                                            :<|> ((Named
                                                                                                     '("get",
                                                                                                       ConferenceCallingConfig)
                                                                                                     (Description
                                                                                                        ""
                                                                                                      :> (ZUser
                                                                                                          :> (Summary
                                                                                                                "Get config for conferenceCalling"
                                                                                                              :> (CanThrow
                                                                                                                    OperationDenied
                                                                                                                  :> (CanThrow
                                                                                                                        'NotATeamMember
                                                                                                                      :> (CanThrow
                                                                                                                            'TeamNotFound
                                                                                                                          :> ("teams"
                                                                                                                              :> (Capture
                                                                                                                                    "tid"
                                                                                                                                    TeamId
                                                                                                                                  :> ("features"
                                                                                                                                      :> ("conferenceCalling"
                                                                                                                                          :> Get
                                                                                                                                               '[JSON]
                                                                                                                                               (LockableFeature
                                                                                                                                                  ConferenceCallingConfig)))))))))))
                                                                                                   :<|> Named
                                                                                                          '("put",
                                                                                                            ConferenceCallingConfig)
                                                                                                          (Description
                                                                                                             ""
                                                                                                           :> (ZUser
                                                                                                               :> (Summary
                                                                                                                     "Put config for conferenceCalling"
                                                                                                                   :> (CanThrow
                                                                                                                         OperationDenied
                                                                                                                       :> (CanThrow
                                                                                                                             'NotATeamMember
                                                                                                                           :> (CanThrow
                                                                                                                                 'TeamNotFound
                                                                                                                               :> (CanThrow
                                                                                                                                     TeamFeatureError
                                                                                                                                   :> (CanThrowMany
                                                                                                                                         '[]
                                                                                                                                       :> ("teams"
                                                                                                                                           :> (Capture
                                                                                                                                                 "tid"
                                                                                                                                                 TeamId
                                                                                                                                               :> ("features"
                                                                                                                                                   :> ("conferenceCalling"
                                                                                                                                                       :> (ReqBody
                                                                                                                                                             '[JSON]
                                                                                                                                                             (Feature
                                                                                                                                                                ConferenceCallingConfig)
                                                                                                                                                           :> Put
                                                                                                                                                                '[JSON]
                                                                                                                                                                (LockableFeature
                                                                                                                                                                   ConferenceCallingConfig)))))))))))))))
                                                                                                  :<|> ((Named
                                                                                                           '("get",
                                                                                                             SelfDeletingMessagesConfig)
                                                                                                           (Description
                                                                                                              ""
                                                                                                            :> (ZUser
                                                                                                                :> (Summary
                                                                                                                      "Get config for selfDeletingMessages"
                                                                                                                    :> (CanThrow
                                                                                                                          OperationDenied
                                                                                                                        :> (CanThrow
                                                                                                                              'NotATeamMember
                                                                                                                            :> (CanThrow
                                                                                                                                  'TeamNotFound
                                                                                                                                :> ("teams"
                                                                                                                                    :> (Capture
                                                                                                                                          "tid"
                                                                                                                                          TeamId
                                                                                                                                        :> ("features"
                                                                                                                                            :> ("selfDeletingMessages"
                                                                                                                                                :> Get
                                                                                                                                                     '[JSON]
                                                                                                                                                     (LockableFeature
                                                                                                                                                        SelfDeletingMessagesConfig)))))))))))
                                                                                                         :<|> Named
                                                                                                                '("put",
                                                                                                                  SelfDeletingMessagesConfig)
                                                                                                                (Description
                                                                                                                   ""
                                                                                                                 :> (ZUser
                                                                                                                     :> (Summary
                                                                                                                           "Put config for selfDeletingMessages"
                                                                                                                         :> (CanThrow
                                                                                                                               OperationDenied
                                                                                                                             :> (CanThrow
                                                                                                                                   'NotATeamMember
                                                                                                                                 :> (CanThrow
                                                                                                                                       'TeamNotFound
                                                                                                                                     :> (CanThrow
                                                                                                                                           TeamFeatureError
                                                                                                                                         :> (CanThrowMany
                                                                                                                                               '[]
                                                                                                                                             :> ("teams"
                                                                                                                                                 :> (Capture
                                                                                                                                                       "tid"
                                                                                                                                                       TeamId
                                                                                                                                                     :> ("features"
                                                                                                                                                         :> ("selfDeletingMessages"
                                                                                                                                                             :> (ReqBody
                                                                                                                                                                   '[JSON]
                                                                                                                                                                   (Feature
                                                                                                                                                                      SelfDeletingMessagesConfig)
                                                                                                                                                                 :> Put
                                                                                                                                                                      '[JSON]
                                                                                                                                                                      (LockableFeature
                                                                                                                                                                         SelfDeletingMessagesConfig)))))))))))))))
                                                                                                        :<|> ((Named
                                                                                                                 '("get",
                                                                                                                   GuestLinksConfig)
                                                                                                                 (Description
                                                                                                                    ""
                                                                                                                  :> (ZUser
                                                                                                                      :> (Summary
                                                                                                                            "Get config for conversationGuestLinks"
                                                                                                                          :> (CanThrow
                                                                                                                                OperationDenied
                                                                                                                              :> (CanThrow
                                                                                                                                    'NotATeamMember
                                                                                                                                  :> (CanThrow
                                                                                                                                        'TeamNotFound
                                                                                                                                      :> ("teams"
                                                                                                                                          :> (Capture
                                                                                                                                                "tid"
                                                                                                                                                TeamId
                                                                                                                                              :> ("features"
                                                                                                                                                  :> ("conversationGuestLinks"
                                                                                                                                                      :> Get
                                                                                                                                                           '[JSON]
                                                                                                                                                           (LockableFeature
                                                                                                                                                              GuestLinksConfig)))))))))))
                                                                                                               :<|> Named
                                                                                                                      '("put",
                                                                                                                        GuestLinksConfig)
                                                                                                                      (Description
                                                                                                                         ""
                                                                                                                       :> (ZUser
                                                                                                                           :> (Summary
                                                                                                                                 "Put config for conversationGuestLinks"
                                                                                                                               :> (CanThrow
                                                                                                                                     OperationDenied
                                                                                                                                   :> (CanThrow
                                                                                                                                         'NotATeamMember
                                                                                                                                       :> (CanThrow
                                                                                                                                             'TeamNotFound
                                                                                                                                           :> (CanThrow
                                                                                                                                                 TeamFeatureError
                                                                                                                                               :> (CanThrowMany
                                                                                                                                                     '[]
                                                                                                                                                   :> ("teams"
                                                                                                                                                       :> (Capture
                                                                                                                                                             "tid"
                                                                                                                                                             TeamId
                                                                                                                                                           :> ("features"
                                                                                                                                                               :> ("conversationGuestLinks"
                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                         '[JSON]
                                                                                                                                                                         (Feature
                                                                                                                                                                            GuestLinksConfig)
                                                                                                                                                                       :> Put
                                                                                                                                                                            '[JSON]
                                                                                                                                                                            (LockableFeature
                                                                                                                                                                               GuestLinksConfig)))))))))))))))
                                                                                                              :<|> ((Named
                                                                                                                       '("get",
                                                                                                                         SndFactorPasswordChallengeConfig)
                                                                                                                       (Description
                                                                                                                          ""
                                                                                                                        :> (ZUser
                                                                                                                            :> (Summary
                                                                                                                                  "Get config for sndFactorPasswordChallenge"
                                                                                                                                :> (CanThrow
                                                                                                                                      OperationDenied
                                                                                                                                    :> (CanThrow
                                                                                                                                          'NotATeamMember
                                                                                                                                        :> (CanThrow
                                                                                                                                              'TeamNotFound
                                                                                                                                            :> ("teams"
                                                                                                                                                :> (Capture
                                                                                                                                                      "tid"
                                                                                                                                                      TeamId
                                                                                                                                                    :> ("features"
                                                                                                                                                        :> ("sndFactorPasswordChallenge"
                                                                                                                                                            :> Get
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 (LockableFeature
                                                                                                                                                                    SndFactorPasswordChallengeConfig)))))))))))
                                                                                                                     :<|> Named
                                                                                                                            '("put",
                                                                                                                              SndFactorPasswordChallengeConfig)
                                                                                                                            (Description
                                                                                                                               ""
                                                                                                                             :> (ZUser
                                                                                                                                 :> (Summary
                                                                                                                                       "Put config for sndFactorPasswordChallenge"
                                                                                                                                     :> (CanThrow
                                                                                                                                           OperationDenied
                                                                                                                                         :> (CanThrow
                                                                                                                                               'NotATeamMember
                                                                                                                                             :> (CanThrow
                                                                                                                                                   'TeamNotFound
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       TeamFeatureError
                                                                                                                                                     :> (CanThrowMany
                                                                                                                                                           '[]
                                                                                                                                                         :> ("teams"
                                                                                                                                                             :> (Capture
                                                                                                                                                                   "tid"
                                                                                                                                                                   TeamId
                                                                                                                                                                 :> ("features"
                                                                                                                                                                     :> ("sndFactorPasswordChallenge"
                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                               '[JSON]
                                                                                                                                                                               (Feature
                                                                                                                                                                                  SndFactorPasswordChallengeConfig)
                                                                                                                                                                             :> Put
                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                     SndFactorPasswordChallengeConfig)))))))))))))))
                                                                                                                    :<|> ((Named
                                                                                                                             '("get",
                                                                                                                               MLSConfig)
                                                                                                                             (From
                                                                                                                                'V5
                                                                                                                              :> (Description
                                                                                                                                    ""
                                                                                                                                  :> (ZUser
                                                                                                                                      :> (Summary
                                                                                                                                            "Get config for mls"
                                                                                                                                          :> (CanThrow
                                                                                                                                                OperationDenied
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'NotATeamMember
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'TeamNotFound
                                                                                                                                                      :> ("teams"
                                                                                                                                                          :> (Capture
                                                                                                                                                                "tid"
                                                                                                                                                                TeamId
                                                                                                                                                              :> ("features"
                                                                                                                                                                  :> ("mls"
                                                                                                                                                                      :> Get
                                                                                                                                                                           '[JSON]
                                                                                                                                                                           (LockableFeature
                                                                                                                                                                              MLSConfig))))))))))))
                                                                                                                           :<|> Named
                                                                                                                                  '("put",
                                                                                                                                    MLSConfig)
                                                                                                                                  (From
                                                                                                                                     'V5
                                                                                                                                   :> (Description
                                                                                                                                         ""
                                                                                                                                       :> (ZUser
                                                                                                                                           :> (Summary
                                                                                                                                                 "Put config for mls"
                                                                                                                                               :> (CanThrow
                                                                                                                                                     OperationDenied
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'NotATeamMember
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'TeamNotFound
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 TeamFeatureError
                                                                                                                                                               :> (CanThrowMany
                                                                                                                                                                     '[]
                                                                                                                                                                   :> ("teams"
                                                                                                                                                                       :> (Capture
                                                                                                                                                                             "tid"
                                                                                                                                                                             TeamId
                                                                                                                                                                           :> ("features"
                                                                                                                                                                               :> ("mls"
                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                         (Feature
                                                                                                                                                                                            MLSConfig)
                                                                                                                                                                                       :> Put
                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                               MLSConfig))))))))))))))))
                                                                                                                          :<|> ((Named
                                                                                                                                   '("get",
                                                                                                                                     ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                   (Description
                                                                                                                                      ""
                                                                                                                                    :> (ZUser
                                                                                                                                        :> (Summary
                                                                                                                                              "Get config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                            :> (CanThrow
                                                                                                                                                  OperationDenied
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'NotATeamMember
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'TeamNotFound
                                                                                                                                                        :> ("teams"
                                                                                                                                                            :> (Capture
                                                                                                                                                                  "tid"
                                                                                                                                                                  TeamId
                                                                                                                                                                :> ("features"
                                                                                                                                                                    :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                        :> Get
                                                                                                                                                                             '[JSON]
                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                ExposeInvitationURLsToTeamAdminConfig)))))))))))
                                                                                                                                 :<|> Named
                                                                                                                                        '("put",
                                                                                                                                          ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                        (Description
                                                                                                                                           ""
                                                                                                                                         :> (ZUser
                                                                                                                                             :> (Summary
                                                                                                                                                   "Put config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       OperationDenied
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'NotATeamMember
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'TeamNotFound
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   TeamFeatureError
                                                                                                                                                                 :> (CanThrowMany
                                                                                                                                                                       '[]
                                                                                                                                                                     :> ("teams"
                                                                                                                                                                         :> (Capture
                                                                                                                                                                               "tid"
                                                                                                                                                                               TeamId
                                                                                                                                                                             :> ("features"
                                                                                                                                                                                 :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                           (Feature
                                                                                                                                                                                              ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                         :> Put
                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                 ExposeInvitationURLsToTeamAdminConfig)))))))))))))))
                                                                                                                                :<|> ((Named
                                                                                                                                         '("get",
                                                                                                                                           SearchVisibilityInboundConfig)
                                                                                                                                         (Description
                                                                                                                                            ""
                                                                                                                                          :> (ZUser
                                                                                                                                              :> (Summary
                                                                                                                                                    "Get config for searchVisibilityInbound"
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        OperationDenied
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'NotATeamMember
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'TeamNotFound
                                                                                                                                                              :> ("teams"
                                                                                                                                                                  :> (Capture
                                                                                                                                                                        "tid"
                                                                                                                                                                        TeamId
                                                                                                                                                                      :> ("features"
                                                                                                                                                                          :> ("searchVisibilityInbound"
                                                                                                                                                                              :> Get
                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                      SearchVisibilityInboundConfig)))))))))))
                                                                                                                                       :<|> Named
                                                                                                                                              '("put",
                                                                                                                                                SearchVisibilityInboundConfig)
                                                                                                                                              (Description
                                                                                                                                                 ""
                                                                                                                                               :> (ZUser
                                                                                                                                                   :> (Summary
                                                                                                                                                         "Put config for searchVisibilityInbound"
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             OperationDenied
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 'NotATeamMember
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         TeamFeatureError
                                                                                                                                                                       :> (CanThrowMany
                                                                                                                                                                             '[]
                                                                                                                                                                           :> ("teams"
                                                                                                                                                                               :> (Capture
                                                                                                                                                                                     "tid"
                                                                                                                                                                                     TeamId
                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                       :> ("searchVisibilityInbound"
                                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                 (Feature
                                                                                                                                                                                                    SearchVisibilityInboundConfig)
                                                                                                                                                                                               :> Put
                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                       SearchVisibilityInboundConfig)))))))))))))))
                                                                                                                                      :<|> ((Named
                                                                                                                                               '("get",
                                                                                                                                                 OutlookCalIntegrationConfig)
                                                                                                                                               (Description
                                                                                                                                                  ""
                                                                                                                                                :> (ZUser
                                                                                                                                                    :> (Summary
                                                                                                                                                          "Get config for outlookCalIntegration"
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              OperationDenied
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                    :> ("teams"
                                                                                                                                                                        :> (Capture
                                                                                                                                                                              "tid"
                                                                                                                                                                              TeamId
                                                                                                                                                                            :> ("features"
                                                                                                                                                                                :> ("outlookCalIntegration"
                                                                                                                                                                                    :> Get
                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                            OutlookCalIntegrationConfig)))))))))))
                                                                                                                                             :<|> Named
                                                                                                                                                    '("put",
                                                                                                                                                      OutlookCalIntegrationConfig)
                                                                                                                                                    (Description
                                                                                                                                                       ""
                                                                                                                                                     :> (ZUser
                                                                                                                                                         :> (Summary
                                                                                                                                                               "Put config for outlookCalIntegration"
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   OperationDenied
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               TeamFeatureError
                                                                                                                                                                             :> (CanThrowMany
                                                                                                                                                                                   '[]
                                                                                                                                                                                 :> ("teams"
                                                                                                                                                                                     :> (Capture
                                                                                                                                                                                           "tid"
                                                                                                                                                                                           TeamId
                                                                                                                                                                                         :> ("features"
                                                                                                                                                                                             :> ("outlookCalIntegration"
                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                       (Feature
                                                                                                                                                                                                          OutlookCalIntegrationConfig)
                                                                                                                                                                                                     :> Put
                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                             OutlookCalIntegrationConfig)))))))))))))))
                                                                                                                                            :<|> (Named
                                                                                                                                                    '("get",
                                                                                                                                                      MlsE2EIdConfig)
                                                                                                                                                    (From
                                                                                                                                                       'V5
                                                                                                                                                     :> (Description
                                                                                                                                                           ""
                                                                                                                                                         :> (ZUser
                                                                                                                                                             :> (Summary
                                                                                                                                                                   "Get config for mlsE2EId"
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       OperationDenied
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                       "tid"
                                                                                                                                                                                       TeamId
                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                         :> ("mlsE2EId"
                                                                                                                                                                                             :> Get
                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                     MlsE2EIdConfig))))))))))))
                                                                                                                                                  :<|> (Named
                                                                                                                                                          "put-MlsE2EIdConfig@v5"
                                                                                                                                                          (From
                                                                                                                                                             'V5
                                                                                                                                                           :> (Until
                                                                                                                                                                 'V6
                                                                                                                                                               :> (ZUser
                                                                                                                                                                   :> (Summary
                                                                                                                                                                         "Put config for mlsE2EId"
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             OperationDenied
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         TeamFeatureError
                                                                                                                                                                                       :> (CanThrowMany
                                                                                                                                                                                             '[]
                                                                                                                                                                                           :> ("teams"
                                                                                                                                                                                               :> (Capture
                                                                                                                                                                                                     "tid"
                                                                                                                                                                                                     TeamId
                                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                                       :> ("mlsE2EId"
                                                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                 (Feature
                                                                                                                                                                                                                    MlsE2EIdConfig)
                                                                                                                                                                                                               :> Put
                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                       MlsE2EIdConfig)))))))))))))))
                                                                                                                                                        :<|> (Named
                                                                                                                                                                '("put",
                                                                                                                                                                  MlsE2EIdConfig)
                                                                                                                                                                (From
                                                                                                                                                                   'V6
                                                                                                                                                                 :> (Description
                                                                                                                                                                       ""
                                                                                                                                                                     :> (ZUser
                                                                                                                                                                         :> (Summary
                                                                                                                                                                               "Put config for mlsE2EId"
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   OperationDenied
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               TeamFeatureError
                                                                                                                                                                                             :> (CanThrowMany
                                                                                                                                                                                                   '[]
                                                                                                                                                                                                 :> ("teams"
                                                                                                                                                                                                     :> (Capture
                                                                                                                                                                                                           "tid"
                                                                                                                                                                                                           TeamId
                                                                                                                                                                                                         :> ("features"
                                                                                                                                                                                                             :> ("mlsE2EId"
                                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                       (Feature
                                                                                                                                                                                                                          MlsE2EIdConfig)
                                                                                                                                                                                                                     :> Put
                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                                             MlsE2EIdConfig)))))))))))))))
                                                                                                                                                              :<|> ((Named
                                                                                                                                                                       '("get",
                                                                                                                                                                         MlsMigrationConfig)
                                                                                                                                                                       (From
                                                                                                                                                                          'V5
                                                                                                                                                                        :> (Description
                                                                                                                                                                              ""
                                                                                                                                                                            :> (ZUser
                                                                                                                                                                                :> (Summary
                                                                                                                                                                                      "Get config for mlsMigration"
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          OperationDenied
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                          "tid"
                                                                                                                                                                                                          TeamId
                                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                                            :> ("mlsMigration"
                                                                                                                                                                                                                :> Get
                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                        MlsMigrationConfig))))))))))))
                                                                                                                                                                     :<|> Named
                                                                                                                                                                            '("put",
                                                                                                                                                                              MlsMigrationConfig)
                                                                                                                                                                            (From
                                                                                                                                                                               'V5
                                                                                                                                                                             :> (Description
                                                                                                                                                                                   ""
                                                                                                                                                                                 :> (ZUser
                                                                                                                                                                                     :> (Summary
                                                                                                                                                                                           "Put config for mlsMigration"
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           TeamFeatureError
                                                                                                                                                                                                         :> (CanThrowMany
                                                                                                                                                                                                               '[]
                                                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                                       "tid"
                                                                                                                                                                                                                       TeamId
                                                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                                                         :> ("mlsMigration"
                                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                   (Feature
                                                                                                                                                                                                                                      MlsMigrationConfig)
                                                                                                                                                                                                                                 :> Put
                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                                         MlsMigrationConfig))))))))))))))))
                                                                                                                                                                    :<|> ((Named
                                                                                                                                                                             '("get",
                                                                                                                                                                               EnforceFileDownloadLocationConfig)
                                                                                                                                                                             (From
                                                                                                                                                                                'V5
                                                                                                                                                                              :> (Description
                                                                                                                                                                                    "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                  :> (ZUser
                                                                                                                                                                                      :> (Summary
                                                                                                                                                                                            "Get config for enforceFileDownloadLocation"
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                      :> ("teams"
                                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                                "tid"
                                                                                                                                                                                                                TeamId
                                                                                                                                                                                                              :> ("features"
                                                                                                                                                                                                                  :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                      :> Get
                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                              EnforceFileDownloadLocationConfig))))))))))))
                                                                                                                                                                           :<|> Named
                                                                                                                                                                                  '("put",
                                                                                                                                                                                    EnforceFileDownloadLocationConfig)
                                                                                                                                                                                  (From
                                                                                                                                                                                     'V5
                                                                                                                                                                                   :> (Description
                                                                                                                                                                                         "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                       :> (ZUser
                                                                                                                                                                                           :> (Summary
                                                                                                                                                                                                 "Put config for enforceFileDownloadLocation"
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                 TeamFeatureError
                                                                                                                                                                                                               :> (CanThrowMany
                                                                                                                                                                                                                     '[]
                                                                                                                                                                                                                   :> ("teams"
                                                                                                                                                                                                                       :> (Capture
                                                                                                                                                                                                                             "tid"
                                                                                                                                                                                                                             TeamId
                                                                                                                                                                                                                           :> ("features"
                                                                                                                                                                                                                               :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                         (Feature
                                                                                                                                                                                                                                            EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                       :> Put
                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                                               EnforceFileDownloadLocationConfig))))))))))))))))
                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                  '("get",
                                                                                                                                                                                    LimitedEventFanoutConfig)
                                                                                                                                                                                  (From
                                                                                                                                                                                     'V5
                                                                                                                                                                                   :> (Description
                                                                                                                                                                                         ""
                                                                                                                                                                                       :> (ZUser
                                                                                                                                                                                           :> (Summary
                                                                                                                                                                                                 "Get config for limitedEventFanout"
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                                           :> ("teams"
                                                                                                                                                                                                               :> (Capture
                                                                                                                                                                                                                     "tid"
                                                                                                                                                                                                                     TeamId
                                                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                                                       :> ("limitedEventFanout"
                                                                                                                                                                                                                           :> Get
                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                   LimitedEventFanoutConfig))))))))))))
                                                                                                                                                                                :<|> (AllTeamFeaturesUserGet
                                                                                                                                                                                      :<|> (AllTeamFeaturesTeamGet
                                                                                                                                                                                            :<|> ((Named
                                                                                                                                                                                                     '("get-deprecated",
                                                                                                                                                                                                       SearchVisibilityAvailableConfig)
                                                                                                                                                                                                     (ZUser
                                                                                                                                                                                                      :> (Summary
                                                                                                                                                                                                            "[deprecated] Get config for searchVisibility"
                                                                                                                                                                                                          :> (Until
                                                                                                                                                                                                                'V2
                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                    "Deprecated. Please use `GET /teams/:tid/features/searchVisibility` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                                                        "tid"
                                                                                                                                                                                                                                        TeamId
                                                                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                                                                          :> ("search-visibility"
                                                                                                                                                                                                                                              :> Get
                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                                      SearchVisibilityAvailableConfig))))))))))))
                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                           '("put-deprecated",
                                                                                                                                                                                                             SearchVisibilityAvailableConfig)
                                                                                                                                                                                                           (ZUser
                                                                                                                                                                                                            :> (Summary
                                                                                                                                                                                                                  "[deprecated] Get config for searchVisibility"
                                                                                                                                                                                                                :> (Until
                                                                                                                                                                                                                      'V2
                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                          "Deprecated. Please use `PUT /teams/:tid/features/searchVisibility` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                          TeamFeatureError
                                                                                                                                                                                                                                        :> ("teams"
                                                                                                                                                                                                                                            :> (Capture
                                                                                                                                                                                                                                                  "tid"
                                                                                                                                                                                                                                                  TeamId
                                                                                                                                                                                                                                                :> ("features"
                                                                                                                                                                                                                                                    :> ("search-visibility"
                                                                                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                              (Feature
                                                                                                                                                                                                                                                                 SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                                                            :> Put
                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                                                                    SearchVisibilityAvailableConfig))))))))))))))
                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                 '("get-deprecated",
                                                                                                                                                                                                                   ValidateSAMLEmailsConfig)
                                                                                                                                                                                                                 (ZUser
                                                                                                                                                                                                                  :> (Summary
                                                                                                                                                                                                                        "[deprecated] Get config for validateSAMLemails"
                                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                          :> (Description
                                                                                                                                                                                                                                "Deprecated. Please use `GET /teams/:tid/features/validateSAMLemails` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        OperationDenied
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                                                                      :> ("validate-saml-emails"
                                                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                                                  ValidateSAMLEmailsConfig))))))))))))
                                                                                                                                                                                                               :<|> Named
                                                                                                                                                                                                                      '("get-deprecated",
                                                                                                                                                                                                                        DigitalSignaturesConfig)
                                                                                                                                                                                                                      (ZUser
                                                                                                                                                                                                                       :> (Summary
                                                                                                                                                                                                                             "[deprecated] Get config for digitalSignatures"
                                                                                                                                                                                                                           :> (Until
                                                                                                                                                                                                                                 'V2
                                                                                                                                                                                                                               :> (Description
                                                                                                                                                                                                                                     "Deprecated. Please use `GET /teams/:tid/features/digitalSignatures` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                             OperationDenied
                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                                                                               :> ("teams"
                                                                                                                                                                                                                                                   :> (Capture
                                                                                                                                                                                                                                                         "tid"
                                                                                                                                                                                                                                                         TeamId
                                                                                                                                                                                                                                                       :> ("features"
                                                                                                                                                                                                                                                           :> ("digital-signatures"
                                                                                                                                                                                                                                                               :> Get
                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                                                                       DigitalSignaturesConfig)))))))))))))))
                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                          '("get-config",
                                                                                                                                                                                                            LegalholdConfig)
                                                                                                                                                                                                          (Summary
                                                                                                                                                                                                             "[deprecated] Get feature config for feature legalhold"
                                                                                                                                                                                                           :> (Until
                                                                                                                                                                                                                 'V2
                                                                                                                                                                                                               :> (Description
                                                                                                                                                                                                                     "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                   :> (ZUser
                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                 OperationDenied
                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                                                                   :> ("feature-configs"
                                                                                                                                                                                                                                       :> ("legalhold"
                                                                                                                                                                                                                                           :> Get
                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                                   LegalholdConfig))))))))))
                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                '("get-config",
                                                                                                                                                                                                                  SSOConfig)
                                                                                                                                                                                                                (Summary
                                                                                                                                                                                                                   "[deprecated] Get feature config for feature sso"
                                                                                                                                                                                                                 :> (Until
                                                                                                                                                                                                                       'V2
                                                                                                                                                                                                                     :> (Description
                                                                                                                                                                                                                           "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                         :> (ZUser
                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                                                                         :> ("feature-configs"
                                                                                                                                                                                                                                             :> ("sso"
                                                                                                                                                                                                                                                 :> Get
                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                                                         SSOConfig))))))))))
                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                      '("get-config",
                                                                                                                                                                                                                        SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                                         "[deprecated] Get feature config for feature searchVisibility"
                                                                                                                                                                                                                       :> (Until
                                                                                                                                                                                                                             'V2
                                                                                                                                                                                                                           :> (Description
                                                                                                                                                                                                                                 "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                               :> (ZUser
                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                             OperationDenied
                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                                                                               :> ("feature-configs"
                                                                                                                                                                                                                                                   :> ("searchVisibility"
                                                                                                                                                                                                                                                       :> Get
                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                                                               SearchVisibilityAvailableConfig))))))))))
                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                            '("get-config",
                                                                                                                                                                                                                              ValidateSAMLEmailsConfig)
                                                                                                                                                                                                                            (Summary
                                                                                                                                                                                                                               "[deprecated] Get feature config for feature validateSAMLemails"
                                                                                                                                                                                                                             :> (Until
                                                                                                                                                                                                                                   'V2
                                                                                                                                                                                                                                 :> (Description
                                                                                                                                                                                                                                       "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                     :> (ZUser
                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                   OperationDenied
                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                                                                                     :> ("feature-configs"
                                                                                                                                                                                                                                                         :> ("validateSAMLemails"
                                                                                                                                                                                                                                                             :> Get
                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                                                     ValidateSAMLEmailsConfig))))))))))
                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                  '("get-config",
                                                                                                                                                                                                                                    DigitalSignaturesConfig)
                                                                                                                                                                                                                                  (Summary
                                                                                                                                                                                                                                     "[deprecated] Get feature config for feature digitalSignatures"
                                                                                                                                                                                                                                   :> (Until
                                                                                                                                                                                                                                         'V2
                                                                                                                                                                                                                                       :> (Description
                                                                                                                                                                                                                                             "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                           :> (ZUser
                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                                                                                           :> ("feature-configs"
                                                                                                                                                                                                                                                               :> ("digitalSignatures"
                                                                                                                                                                                                                                                                   :> Get
                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                                                                                           DigitalSignaturesConfig))))))))))
                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                        '("get-config",
                                                                                                                                                                                                                                          AppLockConfig)
                                                                                                                                                                                                                                        (Summary
                                                                                                                                                                                                                                           "[deprecated] Get feature config for feature appLock"
                                                                                                                                                                                                                                         :> (Until
                                                                                                                                                                                                                                               'V2
                                                                                                                                                                                                                                             :> (Description
                                                                                                                                                                                                                                                   "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                 :> (ZUser
                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                                                                                 :> ("feature-configs"
                                                                                                                                                                                                                                                                     :> ("appLock"
                                                                                                                                                                                                                                                                         :> Get
                                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                                                                 AppLockConfig))))))))))
                                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                                              '("get-config",
                                                                                                                                                                                                                                                FileSharingConfig)
                                                                                                                                                                                                                                              (Summary
                                                                                                                                                                                                                                                 "[deprecated] Get feature config for feature fileSharing"
                                                                                                                                                                                                                                               :> (Until
                                                                                                                                                                                                                                                     'V2
                                                                                                                                                                                                                                                   :> (Description
                                                                                                                                                                                                                                                         "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                       :> (ZUser
                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                                                                                                       :> ("feature-configs"
                                                                                                                                                                                                                                                                           :> ("fileSharing"
                                                                                                                                                                                                                                                                               :> Get
                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                                                                                       FileSharingConfig))))))))))
                                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                                    '("get-config",
                                                                                                                                                                                                                                                      ClassifiedDomainsConfig)
                                                                                                                                                                                                                                                    (Summary
                                                                                                                                                                                                                                                       "[deprecated] Get feature config for feature classifiedDomains"
                                                                                                                                                                                                                                                     :> (Until
                                                                                                                                                                                                                                                           'V2
                                                                                                                                                                                                                                                         :> (Description
                                                                                                                                                                                                                                                               "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                             :> (ZUser
                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                           OperationDenied
                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                                                                                                                             :> ("feature-configs"
                                                                                                                                                                                                                                                                                 :> ("classifiedDomains"
                                                                                                                                                                                                                                                                                     :> Get
                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                                                                                                             ClassifiedDomainsConfig))))))))))
                                                                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                                                                          '("get-config",
                                                                                                                                                                                                                                                            ConferenceCallingConfig)
                                                                                                                                                                                                                                                          (Summary
                                                                                                                                                                                                                                                             "[deprecated] Get feature config for feature conferenceCalling"
                                                                                                                                                                                                                                                           :> (Until
                                                                                                                                                                                                                                                                 'V2
                                                                                                                                                                                                                                                               :> (Description
                                                                                                                                                                                                                                                                     "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                   :> (ZUser
                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                 OperationDenied
                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                                                                                                                   :> ("feature-configs"
                                                                                                                                                                                                                                                                                       :> ("conferenceCalling"
                                                                                                                                                                                                                                                                                           :> Get
                                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                                                                                   ConferenceCallingConfig))))))))))
                                                                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                                                                '("get-config",
                                                                                                                                                                                                                                                                  SelfDeletingMessagesConfig)
                                                                                                                                                                                                                                                                (Summary
                                                                                                                                                                                                                                                                   "[deprecated] Get feature config for feature selfDeletingMessages"
                                                                                                                                                                                                                                                                 :> (Until
                                                                                                                                                                                                                                                                       'V2
                                                                                                                                                                                                                                                                     :> (Description
                                                                                                                                                                                                                                                                           "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                         :> (ZUser
                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                                                                                                                         :> ("feature-configs"
                                                                                                                                                                                                                                                                                             :> ("selfDeletingMessages"
                                                                                                                                                                                                                                                                                                 :> Get
                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                                                                                                         SelfDeletingMessagesConfig))))))))))
                                                                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                                                                      '("get-config",
                                                                                                                                                                                                                                                                        GuestLinksConfig)
                                                                                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                                                                                         "[deprecated] Get feature config for feature conversationGuestLinks"
                                                                                                                                                                                                                                                                       :> (Until
                                                                                                                                                                                                                                                                             'V2
                                                                                                                                                                                                                                                                           :> (Description
                                                                                                                                                                                                                                                                                 "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                               :> (ZUser
                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                             OperationDenied
                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                                                                                                                               :> ("feature-configs"
                                                                                                                                                                                                                                                                                                   :> ("conversationGuestLinks"
                                                                                                                                                                                                                                                                                                       :> Get
                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                                                                                                               GuestLinksConfig))))))))))
                                                                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                                                                            '("get-config",
                                                                                                                                                                                                                                                                              SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                                                                                            (Summary
                                                                                                                                                                                                                                                                               "[deprecated] Get feature config for feature sndFactorPasswordChallenge"
                                                                                                                                                                                                                                                                             :> (Until
                                                                                                                                                                                                                                                                                   'V2
                                                                                                                                                                                                                                                                                 :> (Description
                                                                                                                                                                                                                                                                                       "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                                     :> (ZUser
                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                   OperationDenied
                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                                                                                                                                     :> ("feature-configs"
                                                                                                                                                                                                                                                                                                         :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                                                                                                                             :> Get
                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                                                                                                     SndFactorPasswordChallengeConfig))))))))))
                                                                                                                                                                                                                                                                          :<|> Named
                                                                                                                                                                                                                                                                                 '("get-config",
                                                                                                                                                                                                                                                                                   MLSConfig)
                                                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                                                    "[deprecated] Get feature config for feature mls"
                                                                                                                                                                                                                                                                                  :> (Until
                                                                                                                                                                                                                                                                                        'V2
                                                                                                                                                                                                                                                                                      :> (Description
                                                                                                                                                                                                                                                                                            "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                                          :> (ZUser
                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                        OperationDenied
                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                                                                                                                                          :> ("feature-configs"
                                                                                                                                                                                                                                                                                                              :> ("mls"
                                                                                                                                                                                                                                                                                                                  :> Get
                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                                                                                                                          MLSConfig)))))))))))))))))))))))))))))))))))))))))))))))))
                                     :<|> ((Named
                                              "mls-message"
                                              ("mls"
                                               :> (Summary "Post an MLS message"
                                                   :> (From 'V5
                                                       :> (MakesFederatedCall
                                                             'Galley "on-mls-message-sent"
                                                           :> (MakesFederatedCall
                                                                 'Galley "send-mls-message"
                                                               :> (MakesFederatedCall
                                                                     'Galley
                                                                     "on-conversation-updated"
                                                                   :> (MakesFederatedCall
                                                                         'Brig "get-mls-clients"
                                                                       :> (CanThrow
                                                                             'ConvAccessDenied
                                                                           :> (CanThrow
                                                                                 'ConvMemberNotFound
                                                                               :> (CanThrow
                                                                                     'ConvNotFound
                                                                                   :> (CanThrow
                                                                                         'LegalHoldNotEnabled
                                                                                       :> (CanThrow
                                                                                             'MissingLegalholdConsent
                                                                                           :> (CanThrow
                                                                                                 'MLSClientMismatch
                                                                                               :> (CanThrow
                                                                                                     'MLSClientSenderUserMismatch
                                                                                                   :> (CanThrow
                                                                                                         'MLSCommitMissingReferences
                                                                                                       :> (CanThrow
                                                                                                             'MLSGroupConversationMismatch
                                                                                                           :> (CanThrow
                                                                                                                 'MLSInvalidLeafNodeIndex
                                                                                                               :> (CanThrow
                                                                                                                     'MLSNotEnabled
                                                                                                                   :> (CanThrow
                                                                                                                         'MLSProposalNotFound
                                                                                                                       :> (CanThrow
                                                                                                                             'MLSProtocolErrorTag
                                                                                                                           :> (CanThrow
                                                                                                                                 'MLSSelfRemovalNotAllowed
                                                                                                                               :> (CanThrow
                                                                                                                                     'MLSStaleMessage
                                                                                                                                   :> (CanThrow
                                                                                                                                         'MLSSubConvClientNotInParent
                                                                                                                                       :> (CanThrow
                                                                                                                                             'MLSUnsupportedMessage
                                                                                                                                           :> (CanThrow
                                                                                                                                                 'MLSUnsupportedProposal
                                                                                                                                               :> (CanThrow
                                                                                                                                                     MLSProposalFailure
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         NonFederatingBackends
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             UnreachableBackends
                                                                                                                                                           :> ("messages"
                                                                                                                                                               :> (ZLocalUser
                                                                                                                                                                   :> (ZClient
                                                                                                                                                                       :> (ZConn
                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                 '[MLS]
                                                                                                                                                                                 (RawMLS
                                                                                                                                                                                    Message)
                                                                                                                                                                               :> MultiVerb
                                                                                                                                                                                    'POST
                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                    '[Respond
                                                                                                                                                                                        201
                                                                                                                                                                                        "Message sent"
                                                                                                                                                                                        MLSMessageSendingStatus]
                                                                                                                                                                                    MLSMessageSendingStatus)))))))))))))))))))))))))))))))))
                                            :<|> (Named
                                                    "mls-commit-bundle"
                                                    ("mls"
                                                     :> (Summary "Post a MLS CommitBundle"
                                                         :> (From 'V5
                                                             :> (MakesFederatedCall
                                                                   'Galley "on-mls-message-sent"
                                                                 :> (MakesFederatedCall
                                                                       'Galley "mls-welcome"
                                                                     :> (MakesFederatedCall
                                                                           'Galley
                                                                           "send-mls-commit-bundle"
                                                                         :> (MakesFederatedCall
                                                                               'Galley
                                                                               "on-conversation-updated"
                                                                             :> (MakesFederatedCall
                                                                                   'Brig
                                                                                   "get-mls-clients"
                                                                                 :> (MakesFederatedCall
                                                                                       'Brig
                                                                                       "get-users-by-ids"
                                                                                     :> (MakesFederatedCall
                                                                                           'Brig
                                                                                           "api-version"
                                                                                         :> (CanThrow
                                                                                               'ConvAccessDenied
                                                                                             :> (CanThrow
                                                                                                   'ConvMemberNotFound
                                                                                                 :> (CanThrow
                                                                                                       'ConvNotFound
                                                                                                     :> (CanThrow
                                                                                                           'LegalHoldNotEnabled
                                                                                                         :> (CanThrow
                                                                                                               'MissingLegalholdConsent
                                                                                                             :> (CanThrow
                                                                                                                   'MLSClientMismatch
                                                                                                                 :> (CanThrow
                                                                                                                       'MLSClientSenderUserMismatch
                                                                                                                     :> (CanThrow
                                                                                                                           'MLSCommitMissingReferences
                                                                                                                         :> (CanThrow
                                                                                                                               'MLSGroupConversationMismatch
                                                                                                                             :> (CanThrow
                                                                                                                                   'MLSInvalidLeafNodeIndex
                                                                                                                                 :> (CanThrow
                                                                                                                                       'MLSNotEnabled
                                                                                                                                     :> (CanThrow
                                                                                                                                           'MLSProposalNotFound
                                                                                                                                         :> (CanThrow
                                                                                                                                               'MLSProtocolErrorTag
                                                                                                                                             :> (CanThrow
                                                                                                                                                   'MLSSelfRemovalNotAllowed
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'MLSStaleMessage
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'MLSSubConvClientNotInParent
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'MLSUnsupportedMessage
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'MLSUnsupportedProposal
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       'MLSWelcomeMismatch
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           'MLSLegalholdIncompatible
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               MLSProposalFailure
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   NonFederatingBackends
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       UnreachableBackends
                                                                                                                                                                                     :> ("commit-bundles"
                                                                                                                                                                                         :> (ZLocalUser
                                                                                                                                                                                             :> (ZClient
                                                                                                                                                                                                 :> (ZConn
                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                           '[MLS]
                                                                                                                                                                                                           (RawMLS
                                                                                                                                                                                                              CommitBundle)
                                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                                              'POST
                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                              '[Respond
                                                                                                                                                                                                                  201
                                                                                                                                                                                                                  "Commit accepted and forwarded"
                                                                                                                                                                                                                  MLSMessageSendingStatus]
                                                                                                                                                                                                              MLSMessageSendingStatus))))))))))))))))))))))))))))))))))))))
                                                  :<|> Named
                                                         "mls-public-keys"
                                                         ("mls"
                                                          :> (Summary
                                                                "Get public keys used by the backend to sign external proposals"
                                                              :> (Description
                                                                    "The format of the returned key is determined by the `format` query parameter:\n - raw (default): base64-encoded raw public keys\n - jwk: keys are nested objects in JWK format."
                                                                  :> (From 'V5
                                                                      :> (CanThrow 'MLSNotEnabled
                                                                          :> ("public-keys"
                                                                              :> (ZLocalUser
                                                                                  :> (QueryParam
                                                                                        "format"
                                                                                        MLSPublicKeyFormat
                                                                                      :> MultiVerb
                                                                                           'GET
                                                                                           '[JSON]
                                                                                           '[Respond
                                                                                               200
                                                                                               "Public keys"
                                                                                               (MLSKeysByPurpose
                                                                                                  (MLSKeys
                                                                                                     SomeKey))]
                                                                                           (MLSKeysByPurpose
                                                                                              (MLSKeys
                                                                                                 SomeKey))))))))))))
                                           :<|> (CustomBackendAPI
                                                 :<|> ((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"
                                                                       :> (MakesFederatedCall
                                                                             'Galley
                                                                             "on-conversation-updated"
                                                                           :> (MakesFederatedCall
                                                                                 'Galley
                                                                                 "on-mls-message-sent"
                                                                               :> (MakesFederatedCall
                                                                                     'Brig
                                                                                     "get-users-by-ids"
                                                                                   :> (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"
                                                                                   :> (MakesFederatedCall
                                                                                         'Galley
                                                                                         "on-conversation-updated"
                                                                                       :> (MakesFederatedCall
                                                                                             'Galley
                                                                                             "on-mls-message-sent"
                                                                                           :> (MakesFederatedCall
                                                                                                 'Brig
                                                                                                 "get-users-by-ids"
                                                                                               :> (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"
                                                                                         :> (MakesFederatedCall
                                                                                               'Galley
                                                                                               "on-conversation-updated"
                                                                                             :> (MakesFederatedCall
                                                                                                   'Galley
                                                                                                   "on-mls-message-sent"
                                                                                                 :> (MakesFederatedCall
                                                                                                       'Brig
                                                                                                       "get-users-by-ids"
                                                                                                     :> (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"
                                                                                               :> (MakesFederatedCall
                                                                                                     'Galley
                                                                                                     "on-conversation-updated"
                                                                                                   :> (MakesFederatedCall
                                                                                                         'Galley
                                                                                                         "on-mls-message-sent"
                                                                                                       :> (MakesFederatedCall
                                                                                                             'Brig
                                                                                                             "get-users-by-ids"
                                                                                                           :> (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"
                                                                                                    :> (MakesFederatedCall
                                                                                                          'Galley
                                                                                                          "on-conversation-updated"
                                                                                                        :> (MakesFederatedCall
                                                                                                              'Galley
                                                                                                              "on-mls-message-sent"
                                                                                                            :> (MakesFederatedCall
                                                                                                                  'Brig
                                                                                                                  "get-users-by-ids"
                                                                                                                :> (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"]
                                                                                                                                                                                                     ())))))))))))))))))))))))))))))))
                                                       :<|> ((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)))))))))))))))
                                                             :<|> TeamNotificationAPI))))))))))
      :<|> (("i"
             :> (Named
                   "status"
                   ("status" :> MultiVerb 'GET '[JSON] '[RespondEmpty 200 "OK"] ())
                 :<|> (Named
                         "delete-user"
                         (Summary
                            "Remove a user from their teams and conversations and erase their clients"
                          :> (MakesFederatedCall 'Galley "on-conversation-updated"
                              :> (MakesFederatedCall 'Galley "on-mls-message-sent"
                                  :> (ZLocalUser
                                      :> (ZOptConn
                                          :> ("user"
                                              :> MultiVerb
                                                   'DELETE
                                                   '[JSON]
                                                   '[RespondEmpty 200 "Remove a user from Galley"]
                                                   ()))))))
                       :<|> (Named
                               "connect"
                               (Summary "Create a connect conversation (deprecated)"
                                :> (MakesFederatedCall 'Brig "api-version"
                                    :> (MakesFederatedCall 'Galley "on-conversation-created"
                                        :> (MakesFederatedCall 'Galley "on-conversation-updated"
                                            :> (CanThrow 'ConvNotFound
                                                :> (CanThrow 'InvalidOperation
                                                    :> (CanThrow 'NotConnected
                                                        :> (CanThrow UnreachableBackends
                                                            :> (ZLocalUser
                                                                :> (ZOptConn
                                                                    :> ("conversations"
                                                                        :> ("connect"
                                                                            :> (ReqBody
                                                                                  '[JSON] Connect
                                                                                :> MultiVerb
                                                                                     'POST
                                                                                     '[JSON]
                                                                                     '[WithHeaders
                                                                                         ConversationHeaders
                                                                                         Conversation
                                                                                         (VersionedRespond
                                                                                            'V6
                                                                                            200
                                                                                            "Conversation existed"
                                                                                            Conversation),
                                                                                       WithHeaders
                                                                                         ConversationHeaders
                                                                                         Conversation
                                                                                         (VersionedRespond
                                                                                            'V6
                                                                                            201
                                                                                            "Conversation created"
                                                                                            Conversation)]
                                                                                     (ResponseForExistedCreated
                                                                                        Conversation))))))))))))))
                             :<|> (Named
                                     "get-conversation-clients"
                                     (Summary "Get mls conversation client list"
                                      :> (CanThrow 'ConvNotFound
                                          :> ("group"
                                              :> (Capture "gid" GroupId
                                                  :> MultiVerb
                                                       'GET
                                                       '[JSON]
                                                       '[Respond 200 "Clients" ClientList]
                                                       ClientList))))
                                   :<|> (Named
                                           "guard-legalhold-policy-conflicts"
                                           ("guard-legalhold-policy-conflicts"
                                            :> (CanThrow 'MissingLegalholdConsent
                                                :> (CanThrow 'MissingLegalholdConsentOldClients
                                                    :> (ReqBody
                                                          '[JSON] GuardLegalholdPolicyConflicts
                                                        :> MultiVerb
                                                             'PUT
                                                             '[JSON]
                                                             '[RespondEmpty
                                                                 200 "Guard Legalhold Policy"]
                                                             ()))))
                                         :<|> (("legalhold"
                                                :> ("whitelisted-teams"
                                                    :> (Capture "tid" TeamId
                                                        :> (Named
                                                              "set-team-legalhold-whitelisted"
                                                              (MultiVerb
                                                                 'PUT
                                                                 '[JSON]
                                                                 '[RespondEmpty
                                                                     200
                                                                     "Team Legalhold Whitelisted"]
                                                                 ())
                                                            :<|> (Named
                                                                    "unset-team-legalhold-whitelisted"
                                                                    (MultiVerb
                                                                       'DELETE
                                                                       '[JSON]
                                                                       '[RespondEmpty
                                                                           204
                                                                           "Team Legalhold un-Whitelisted"]
                                                                       ())
                                                                  :<|> Named
                                                                         "get-team-legalhold-whitelisted"
                                                                         (MultiVerb
                                                                            'GET
                                                                            '[JSON]
                                                                            '[RespondEmpty
                                                                                404
                                                                                "Team not Legalhold Whitelisted",
                                                                              RespondEmpty
                                                                                200
                                                                                "Team Legalhold Whitelisted"]
                                                                            Bool))))))
                                               :<|> (("teams"
                                                      :> (Capture "tid" TeamId
                                                          :> (Named
                                                                "get-team-internal"
                                                                (CanThrow 'TeamNotFound
                                                                 :> Get '[JSON] TeamData)
                                                              :<|> (Named
                                                                      "create-binding-team"
                                                                      (ZUser
                                                                       :> (ReqBody
                                                                             '[JSON] BindingNewTeam
                                                                           :> MultiVerb
                                                                                'PUT
                                                                                '[JSON]
                                                                                '[WithHeaders
                                                                                    '[Header
                                                                                        "Location"
                                                                                        TeamId]
                                                                                    TeamId
                                                                                    (RespondEmpty
                                                                                       201 "OK")]
                                                                                TeamId))
                                                                    :<|> (Named
                                                                            "delete-binding-team"
                                                                            (CanThrow 'NoBindingTeam
                                                                             :> (CanThrow
                                                                                   'NotAOneMemberTeam
                                                                                 :> (CanThrow
                                                                                       'DeleteQueueFull
                                                                                     :> (CanThrow
                                                                                           'TeamNotFound
                                                                                         :> (QueryFlag
                                                                                               "force"
                                                                                             :> MultiVerb
                                                                                                  'DELETE
                                                                                                  '[JSON]
                                                                                                  '[RespondEmpty
                                                                                                      202
                                                                                                      "OK"]
                                                                                                  ())))))
                                                                          :<|> (Named
                                                                                  "get-team-name"
                                                                                  ("name"
                                                                                   :> (CanThrow
                                                                                         'TeamNotFound
                                                                                       :> Get
                                                                                            '[JSON]
                                                                                            TeamName))
                                                                                :<|> (Named
                                                                                        "update-team-status"
                                                                                        ("status"
                                                                                         :> (CanThrow
                                                                                               'TeamNotFound
                                                                                             :> (CanThrow
                                                                                                   'InvalidTeamStatusUpdate
                                                                                                 :> (ReqBody
                                                                                                       '[JSON]
                                                                                                       TeamStatusUpdate
                                                                                                     :> MultiVerb
                                                                                                          'PUT
                                                                                                          '[JSON]
                                                                                                          '[RespondEmpty
                                                                                                              200
                                                                                                              "OK"]
                                                                                                          ()))))
                                                                                      :<|> (("members"
                                                                                             :> (Named
                                                                                                   "unchecked-add-team-member"
                                                                                                   (CanThrow
                                                                                                      'TooManyTeamMembers
                                                                                                    :> (CanThrow
                                                                                                          'TooManyTeamMembersOnTeamWithLegalhold
                                                                                                        :> (CanThrow
                                                                                                              'TooManyTeamAdmins
                                                                                                            :> (ReqBody
                                                                                                                  '[JSON]
                                                                                                                  NewTeamMember
                                                                                                                :> MultiVerb
                                                                                                                     'POST
                                                                                                                     '[JSON]
                                                                                                                     '[RespondEmpty
                                                                                                                         200
                                                                                                                         "OK"]
                                                                                                                     ()))))
                                                                                                 :<|> (Named
                                                                                                         "unchecked-get-team-members"
                                                                                                         (QueryParam'
                                                                                                            '[Strict]
                                                                                                            "maxResults"
                                                                                                            (Range
                                                                                                               1
                                                                                                               HardTruncationLimit
                                                                                                               Int32)
                                                                                                          :> Get
                                                                                                               '[JSON]
                                                                                                               TeamMemberList)
                                                                                                       :<|> (Named
                                                                                                               "unchecked-get-team-member"
                                                                                                               (Capture
                                                                                                                  "uid"
                                                                                                                  UserId
                                                                                                                :> (CanThrow
                                                                                                                      'TeamMemberNotFound
                                                                                                                    :> Get
                                                                                                                         '[JSON]
                                                                                                                         TeamMember))
                                                                                                             :<|> (Named
                                                                                                                     "can-user-join-team"
                                                                                                                     ("check"
                                                                                                                      :> (CanThrow
                                                                                                                            'TooManyTeamMembersOnTeamWithLegalhold
                                                                                                                          :> MultiVerb
                                                                                                                               'GET
                                                                                                                               '[JSON]
                                                                                                                               '[RespondEmpty
                                                                                                                                   200
                                                                                                                                   "User can join"]
                                                                                                                               ()))
                                                                                                                   :<|> Named
                                                                                                                          "unchecked-update-team-member"
                                                                                                                          (CanThrow
                                                                                                                             'AccessDenied
                                                                                                                           :> (CanThrow
                                                                                                                                 'InvalidPermissions
                                                                                                                               :> (CanThrow
                                                                                                                                     'TeamNotFound
                                                                                                                                   :> (CanThrow
                                                                                                                                         'TeamMemberNotFound
                                                                                                                                       :> (CanThrow
                                                                                                                                             'TooManyTeamAdmins
                                                                                                                                           :> (CanThrow
                                                                                                                                                 'NotATeamMember
                                                                                                                                               :> (CanThrow
                                                                                                                                                     OperationDenied
                                                                                                                                                   :> (ReqBody
                                                                                                                                                         '[JSON]
                                                                                                                                                         NewTeamMember
                                                                                                                                                       :> MultiVerb
                                                                                                                                                            'PUT
                                                                                                                                                            '[JSON]
                                                                                                                                                            '[RespondEmpty
                                                                                                                                                                200
                                                                                                                                                                ""]
                                                                                                                                                            ())))))))))))))
                                                                                            :<|> (Named
                                                                                                    "user-is-team-owner"
                                                                                                    ("is-team-owner"
                                                                                                     :> (Capture
                                                                                                           "uid"
                                                                                                           UserId
                                                                                                         :> (CanThrow
                                                                                                               'AccessDenied
                                                                                                             :> (CanThrow
                                                                                                                   'TeamMemberNotFound
                                                                                                                 :> (CanThrow
                                                                                                                       'NotATeamMember
                                                                                                                     :> MultiVerb
                                                                                                                          'GET
                                                                                                                          '[JSON]
                                                                                                                          '[RespondEmpty
                                                                                                                              200
                                                                                                                              "User is team owner"]
                                                                                                                          ())))))
                                                                                                  :<|> ("search-visibility"
                                                                                                        :> (Named
                                                                                                              "get-search-visibility-internal"
                                                                                                              (Get
                                                                                                                 '[JSON]
                                                                                                                 TeamSearchVisibilityView)
                                                                                                            :<|> Named
                                                                                                                   "set-search-visibility-internal"
                                                                                                                   (CanThrow
                                                                                                                      'TeamSearchVisibilityNotEnabled
                                                                                                                    :> (CanThrow
                                                                                                                          OperationDenied
                                                                                                                        :> (CanThrow
                                                                                                                              'NotATeamMember
                                                                                                                            :> (CanThrow
                                                                                                                                  'TeamNotFound
                                                                                                                                :> (ReqBody
                                                                                                                                      '[JSON]
                                                                                                                                      TeamSearchVisibilityView
                                                                                                                                    :> MultiVerb
                                                                                                                                         'PUT
                                                                                                                                         '[JSON]
                                                                                                                                         '[RespondEmpty
                                                                                                                                             204
                                                                                                                                             "OK"]
                                                                                                                                         ()))))))))))))))))
                                                     :<|> ((Named
                                                              "get-team-members"
                                                              (CanThrow 'NonBindingTeam
                                                               :> (CanThrow 'TeamNotFound
                                                                   :> ("users"
                                                                       :> (Capture "uid" UserId
                                                                           :> ("team"
                                                                               :> ("members"
                                                                                   :> Get
                                                                                        '[JSON]
                                                                                        TeamMemberList))))))
                                                            :<|> (Named
                                                                    "get-team-id"
                                                                    (CanThrow 'NonBindingTeam
                                                                     :> (CanThrow 'TeamNotFound
                                                                         :> ("users"
                                                                             :> (Capture
                                                                                   "uid" UserId
                                                                                 :> ("team"
                                                                                     :> Get
                                                                                          '[JSON]
                                                                                          TeamId)))))
                                                                  :<|> (Named
                                                                          "test-get-clients"
                                                                          ("test"
                                                                           :> ("clients"
                                                                               :> (ZUser
                                                                                   :> Get
                                                                                        '[JSON]
                                                                                        [ClientId])))
                                                                        :<|> (Named
                                                                                "test-add-client"
                                                                                ("clients"
                                                                                 :> (ZUser
                                                                                     :> (Capture
                                                                                           "cid"
                                                                                           ClientId
                                                                                         :> MultiVerb
                                                                                              'POST
                                                                                              '[JSON]
                                                                                              '[RespondEmpty
                                                                                                  200
                                                                                                  "OK"]
                                                                                              ())))
                                                                              :<|> (Named
                                                                                      "test-delete-client"
                                                                                      ("clients"
                                                                                       :> (ZUser
                                                                                           :> (Capture
                                                                                                 "cid"
                                                                                                 ClientId
                                                                                               :> MultiVerb
                                                                                                    'DELETE
                                                                                                    '[JSON]
                                                                                                    '[RespondEmpty
                                                                                                        200
                                                                                                        "OK"]
                                                                                                    ())))
                                                                                    :<|> (Named
                                                                                            "add-service"
                                                                                            ("services"
                                                                                             :> (ReqBody
                                                                                                   '[JSON]
                                                                                                   Service
                                                                                                 :> MultiVerb
                                                                                                      'POST
                                                                                                      '[JSON]
                                                                                                      '[RespondEmpty
                                                                                                          200
                                                                                                          "OK"]
                                                                                                      ()))
                                                                                          :<|> (Named
                                                                                                  "delete-service"
                                                                                                  ("services"
                                                                                                   :> (ReqBody
                                                                                                         '[JSON]
                                                                                                         ServiceRef
                                                                                                       :> MultiVerb
                                                                                                            'DELETE
                                                                                                            '[JSON]
                                                                                                            '[RespondEmpty
                                                                                                                200
                                                                                                                "OK"]
                                                                                                            ()))
                                                                                                :<|> (Named
                                                                                                        "i-add-bot"
                                                                                                        (CanThrow
                                                                                                           ('ActionDenied
                                                                                                              'AddConversationMember)
                                                                                                         :> (CanThrow
                                                                                                               'ConvNotFound
                                                                                                             :> (CanThrow
                                                                                                                   'InvalidOperation
                                                                                                                 :> (CanThrow
                                                                                                                       'TooManyMembers
                                                                                                                     :> ("bots"
                                                                                                                         :> (ZLocalUser
                                                                                                                             :> (ZConn
                                                                                                                                 :> (ReqBody
                                                                                                                                       '[JSON]
                                                                                                                                       AddBot
                                                                                                                                     :> Post
                                                                                                                                          '[JSON]
                                                                                                                                          Event))))))))
                                                                                                      :<|> (Named
                                                                                                              "delete-bot"
                                                                                                              (CanThrow
                                                                                                                 'ConvNotFound
                                                                                                               :> (CanThrow
                                                                                                                     ('ActionDenied
                                                                                                                        'RemoveConversationMember)
                                                                                                                   :> ("bots"
                                                                                                                       :> (ZLocalUser
                                                                                                                           :> (ZOptConn
                                                                                                                               :> (ReqBody
                                                                                                                                     '[JSON]
                                                                                                                                     RemoveBot
                                                                                                                                   :> MultiVerb
                                                                                                                                        'DELETE
                                                                                                                                        '[JSON]
                                                                                                                                        (UpdateResponses
                                                                                                                                           "Bot not found"
                                                                                                                                           "Bot deleted"
                                                                                                                                           Event)
                                                                                                                                        (UpdateResult
                                                                                                                                           Event)))))))
                                                                                                            :<|> (Named
                                                                                                                    "put-custom-backend"
                                                                                                                    ("custom-backend"
                                                                                                                     :> ("by-domain"
                                                                                                                         :> (Capture
                                                                                                                               "domain"
                                                                                                                               Domain
                                                                                                                             :> (ReqBody
                                                                                                                                   '[JSON]
                                                                                                                                   CustomBackend
                                                                                                                                 :> MultiVerb
                                                                                                                                      'PUT
                                                                                                                                      '[JSON]
                                                                                                                                      '[RespondEmpty
                                                                                                                                          201
                                                                                                                                          "OK"]
                                                                                                                                      ()))))
                                                                                                                  :<|> Named
                                                                                                                         "delete-custom-backend"
                                                                                                                         ("custom-backend"
                                                                                                                          :> ("by-domain"
                                                                                                                              :> (Capture
                                                                                                                                    "domain"
                                                                                                                                    Domain
                                                                                                                                  :> MultiVerb
                                                                                                                                       'DELETE
                                                                                                                                       '[JSON]
                                                                                                                                       '[RespondEmpty
                                                                                                                                           200
                                                                                                                                           "OK"]
                                                                                                                                       ())))))))))))))
                                                           :<|> (Named
                                                                   "upsert-one2one"
                                                                   (Summary
                                                                      "Create or Update a connect or one2one conversation."
                                                                    :> ("conversations"
                                                                        :> ("one2one"
                                                                            :> ("upsert"
                                                                                :> (ReqBody
                                                                                      '[JSON]
                                                                                      UpsertOne2OneConversationRequest
                                                                                    :> MultiVerb
                                                                                         'POST
                                                                                         '[JSON]
                                                                                         '[RespondEmpty
                                                                                             200
                                                                                             "Upsert One2One Policy"]
                                                                                         ())))))
                                                                 :<|> ((((Named
                                                                            '("iget",
                                                                              LegalholdConfig)
                                                                            (Description ""
                                                                             :> (Summary
                                                                                   "Get config for legalhold"
                                                                                 :> (CanThrow
                                                                                       OperationDenied
                                                                                     :> (CanThrow
                                                                                           'NotATeamMember
                                                                                         :> (CanThrow
                                                                                               'TeamNotFound
                                                                                             :> ("teams"
                                                                                                 :> (Capture
                                                                                                       "tid"
                                                                                                       TeamId
                                                                                                     :> ("features"
                                                                                                         :> ("legalhold"
                                                                                                             :> Get
                                                                                                                  '[JSON]
                                                                                                                  (LockableFeature
                                                                                                                     LegalholdConfig))))))))))
                                                                          :<|> (Named
                                                                                  '("iput",
                                                                                    LegalholdConfig)
                                                                                  (Description ""
                                                                                   :> (Summary
                                                                                         "Put config for legalhold"
                                                                                       :> (CanThrow
                                                                                             OperationDenied
                                                                                           :> (CanThrow
                                                                                                 'NotATeamMember
                                                                                               :> (CanThrow
                                                                                                     'TeamNotFound
                                                                                                   :> (CanThrow
                                                                                                         TeamFeatureError
                                                                                                       :> (CanThrowMany
                                                                                                             '[ 'ActionDenied
                                                                                                                  'RemoveConversationMember,
                                                                                                                'CannotEnableLegalHoldServiceLargeTeam,
                                                                                                                'LegalHoldNotEnabled,
                                                                                                                'LegalHoldDisableUnimplemented,
                                                                                                                'LegalHoldServiceNotRegistered,
                                                                                                                'UserLegalHoldIllegalOperation,
                                                                                                                'LegalHoldCouldNotBlockConnections]
                                                                                                           :> ("teams"
                                                                                                               :> (Capture
                                                                                                                     "tid"
                                                                                                                     TeamId
                                                                                                                   :> ("features"
                                                                                                                       :> ("legalhold"
                                                                                                                           :> (ReqBody
                                                                                                                                 '[JSON]
                                                                                                                                 (Feature
                                                                                                                                    LegalholdConfig)
                                                                                                                               :> Put
                                                                                                                                    '[JSON]
                                                                                                                                    (LockableFeature
                                                                                                                                       LegalholdConfig)))))))))))))
                                                                                :<|> Named
                                                                                       '("ipatch",
                                                                                         LegalholdConfig)
                                                                                       (Description
                                                                                          ""
                                                                                        :> (Summary
                                                                                              "Patch config for legalhold"
                                                                                            :> (CanThrow
                                                                                                  OperationDenied
                                                                                                :> (CanThrow
                                                                                                      'NotATeamMember
                                                                                                    :> (CanThrow
                                                                                                          'TeamNotFound
                                                                                                        :> (CanThrow
                                                                                                              TeamFeatureError
                                                                                                            :> (CanThrowMany
                                                                                                                  '[ 'ActionDenied
                                                                                                                       'RemoveConversationMember,
                                                                                                                     'CannotEnableLegalHoldServiceLargeTeam,
                                                                                                                     'LegalHoldNotEnabled,
                                                                                                                     'LegalHoldDisableUnimplemented,
                                                                                                                     'LegalHoldServiceNotRegistered,
                                                                                                                     'UserLegalHoldIllegalOperation,
                                                                                                                     'LegalHoldCouldNotBlockConnections]
                                                                                                                :> ("teams"
                                                                                                                    :> (Capture
                                                                                                                          "tid"
                                                                                                                          TeamId
                                                                                                                        :> ("features"
                                                                                                                            :> ("legalhold"
                                                                                                                                :> (ReqBody
                                                                                                                                      '[JSON]
                                                                                                                                      (LockableFeaturePatch
                                                                                                                                         LegalholdConfig)
                                                                                                                                    :> Patch
                                                                                                                                         '[JSON]
                                                                                                                                         (LockableFeature
                                                                                                                                            LegalholdConfig)))))))))))))))
                                                                         :<|> ((Named
                                                                                  '("iget",
                                                                                    SSOConfig)
                                                                                  (Description ""
                                                                                   :> (Summary
                                                                                         "Get config for sso"
                                                                                       :> (CanThrow
                                                                                             OperationDenied
                                                                                           :> (CanThrow
                                                                                                 'NotATeamMember
                                                                                               :> (CanThrow
                                                                                                     'TeamNotFound
                                                                                                   :> ("teams"
                                                                                                       :> (Capture
                                                                                                             "tid"
                                                                                                             TeamId
                                                                                                           :> ("features"
                                                                                                               :> ("sso"
                                                                                                                   :> Get
                                                                                                                        '[JSON]
                                                                                                                        (LockableFeature
                                                                                                                           SSOConfig))))))))))
                                                                                :<|> (Named
                                                                                        '("iput",
                                                                                          SSOConfig)
                                                                                        (Description
                                                                                           ""
                                                                                         :> (Summary
                                                                                               "Put config for sso"
                                                                                             :> (CanThrow
                                                                                                   OperationDenied
                                                                                                 :> (CanThrow
                                                                                                       'NotATeamMember
                                                                                                     :> (CanThrow
                                                                                                           'TeamNotFound
                                                                                                         :> (CanThrow
                                                                                                               TeamFeatureError
                                                                                                             :> (CanThrowMany
                                                                                                                   '[]
                                                                                                                 :> ("teams"
                                                                                                                     :> (Capture
                                                                                                                           "tid"
                                                                                                                           TeamId
                                                                                                                         :> ("features"
                                                                                                                             :> ("sso"
                                                                                                                                 :> (ReqBody
                                                                                                                                       '[JSON]
                                                                                                                                       (Feature
                                                                                                                                          SSOConfig)
                                                                                                                                     :> Put
                                                                                                                                          '[JSON]
                                                                                                                                          (LockableFeature
                                                                                                                                             SSOConfig)))))))))))))
                                                                                      :<|> Named
                                                                                             '("ipatch",
                                                                                               SSOConfig)
                                                                                             (Description
                                                                                                ""
                                                                                              :> (Summary
                                                                                                    "Patch config for sso"
                                                                                                  :> (CanThrow
                                                                                                        OperationDenied
                                                                                                      :> (CanThrow
                                                                                                            'NotATeamMember
                                                                                                          :> (CanThrow
                                                                                                                'TeamNotFound
                                                                                                              :> (CanThrow
                                                                                                                    TeamFeatureError
                                                                                                                  :> (CanThrowMany
                                                                                                                        '[]
                                                                                                                      :> ("teams"
                                                                                                                          :> (Capture
                                                                                                                                "tid"
                                                                                                                                TeamId
                                                                                                                              :> ("features"
                                                                                                                                  :> ("sso"
                                                                                                                                      :> (ReqBody
                                                                                                                                            '[JSON]
                                                                                                                                            (LockableFeaturePatch
                                                                                                                                               SSOConfig)
                                                                                                                                          :> Patch
                                                                                                                                               '[JSON]
                                                                                                                                               (LockableFeature
                                                                                                                                                  SSOConfig)))))))))))))))
                                                                               :<|> ((Named
                                                                                        '("iget",
                                                                                          SearchVisibilityAvailableConfig)
                                                                                        (Description
                                                                                           ""
                                                                                         :> (Summary
                                                                                               "Get config for searchVisibility"
                                                                                             :> (CanThrow
                                                                                                   OperationDenied
                                                                                                 :> (CanThrow
                                                                                                       'NotATeamMember
                                                                                                     :> (CanThrow
                                                                                                           'TeamNotFound
                                                                                                         :> ("teams"
                                                                                                             :> (Capture
                                                                                                                   "tid"
                                                                                                                   TeamId
                                                                                                                 :> ("features"
                                                                                                                     :> ("searchVisibility"
                                                                                                                         :> Get
                                                                                                                              '[JSON]
                                                                                                                              (LockableFeature
                                                                                                                                 SearchVisibilityAvailableConfig))))))))))
                                                                                      :<|> (Named
                                                                                              '("iput",
                                                                                                SearchVisibilityAvailableConfig)
                                                                                              (Description
                                                                                                 ""
                                                                                               :> (Summary
                                                                                                     "Put config for searchVisibility"
                                                                                                   :> (CanThrow
                                                                                                         OperationDenied
                                                                                                       :> (CanThrow
                                                                                                             'NotATeamMember
                                                                                                           :> (CanThrow
                                                                                                                 'TeamNotFound
                                                                                                               :> (CanThrow
                                                                                                                     TeamFeatureError
                                                                                                                   :> (CanThrowMany
                                                                                                                         '[]
                                                                                                                       :> ("teams"
                                                                                                                           :> (Capture
                                                                                                                                 "tid"
                                                                                                                                 TeamId
                                                                                                                               :> ("features"
                                                                                                                                   :> ("searchVisibility"
                                                                                                                                       :> (ReqBody
                                                                                                                                             '[JSON]
                                                                                                                                             (Feature
                                                                                                                                                SearchVisibilityAvailableConfig)
                                                                                                                                           :> Put
                                                                                                                                                '[JSON]
                                                                                                                                                (LockableFeature
                                                                                                                                                   SearchVisibilityAvailableConfig)))))))))))))
                                                                                            :<|> Named
                                                                                                   '("ipatch",
                                                                                                     SearchVisibilityAvailableConfig)
                                                                                                   (Description
                                                                                                      ""
                                                                                                    :> (Summary
                                                                                                          "Patch config for searchVisibility"
                                                                                                        :> (CanThrow
                                                                                                              OperationDenied
                                                                                                            :> (CanThrow
                                                                                                                  'NotATeamMember
                                                                                                                :> (CanThrow
                                                                                                                      'TeamNotFound
                                                                                                                    :> (CanThrow
                                                                                                                          TeamFeatureError
                                                                                                                        :> (CanThrowMany
                                                                                                                              '[]
                                                                                                                            :> ("teams"
                                                                                                                                :> (Capture
                                                                                                                                      "tid"
                                                                                                                                      TeamId
                                                                                                                                    :> ("features"
                                                                                                                                        :> ("searchVisibility"
                                                                                                                                            :> (ReqBody
                                                                                                                                                  '[JSON]
                                                                                                                                                  (LockableFeaturePatch
                                                                                                                                                     SearchVisibilityAvailableConfig)
                                                                                                                                                :> Patch
                                                                                                                                                     '[JSON]
                                                                                                                                                     (LockableFeature
                                                                                                                                                        SearchVisibilityAvailableConfig)))))))))))))))
                                                                                     :<|> ((Named
                                                                                              '("iget",
                                                                                                SearchVisibilityInboundConfig)
                                                                                              (Description
                                                                                                 ""
                                                                                               :> (Summary
                                                                                                     "Get config for searchVisibilityInbound"
                                                                                                   :> (CanThrow
                                                                                                         OperationDenied
                                                                                                       :> (CanThrow
                                                                                                             'NotATeamMember
                                                                                                           :> (CanThrow
                                                                                                                 'TeamNotFound
                                                                                                               :> ("teams"
                                                                                                                   :> (Capture
                                                                                                                         "tid"
                                                                                                                         TeamId
                                                                                                                       :> ("features"
                                                                                                                           :> ("searchVisibilityInbound"
                                                                                                                               :> Get
                                                                                                                                    '[JSON]
                                                                                                                                    (LockableFeature
                                                                                                                                       SearchVisibilityInboundConfig))))))))))
                                                                                            :<|> (Named
                                                                                                    '("iput",
                                                                                                      SearchVisibilityInboundConfig)
                                                                                                    (Description
                                                                                                       ""
                                                                                                     :> (Summary
                                                                                                           "Put config for searchVisibilityInbound"
                                                                                                         :> (CanThrow
                                                                                                               OperationDenied
                                                                                                             :> (CanThrow
                                                                                                                   'NotATeamMember
                                                                                                                 :> (CanThrow
                                                                                                                       'TeamNotFound
                                                                                                                     :> (CanThrow
                                                                                                                           TeamFeatureError
                                                                                                                         :> (CanThrowMany
                                                                                                                               '[]
                                                                                                                             :> ("teams"
                                                                                                                                 :> (Capture
                                                                                                                                       "tid"
                                                                                                                                       TeamId
                                                                                                                                     :> ("features"
                                                                                                                                         :> ("searchVisibilityInbound"
                                                                                                                                             :> (ReqBody
                                                                                                                                                   '[JSON]
                                                                                                                                                   (Feature
                                                                                                                                                      SearchVisibilityInboundConfig)
                                                                                                                                                 :> Put
                                                                                                                                                      '[JSON]
                                                                                                                                                      (LockableFeature
                                                                                                                                                         SearchVisibilityInboundConfig)))))))))))))
                                                                                                  :<|> Named
                                                                                                         '("ipatch",
                                                                                                           SearchVisibilityInboundConfig)
                                                                                                         (Description
                                                                                                            ""
                                                                                                          :> (Summary
                                                                                                                "Patch config for searchVisibilityInbound"
                                                                                                              :> (CanThrow
                                                                                                                    OperationDenied
                                                                                                                  :> (CanThrow
                                                                                                                        'NotATeamMember
                                                                                                                      :> (CanThrow
                                                                                                                            'TeamNotFound
                                                                                                                          :> (CanThrow
                                                                                                                                TeamFeatureError
                                                                                                                              :> (CanThrowMany
                                                                                                                                    '[]
                                                                                                                                  :> ("teams"
                                                                                                                                      :> (Capture
                                                                                                                                            "tid"
                                                                                                                                            TeamId
                                                                                                                                          :> ("features"
                                                                                                                                              :> ("searchVisibilityInbound"
                                                                                                                                                  :> (ReqBody
                                                                                                                                                        '[JSON]
                                                                                                                                                        (LockableFeaturePatch
                                                                                                                                                           SearchVisibilityInboundConfig)
                                                                                                                                                      :> Patch
                                                                                                                                                           '[JSON]
                                                                                                                                                           (LockableFeature
                                                                                                                                                              SearchVisibilityInboundConfig)))))))))))))))
                                                                                           :<|> ((Named
                                                                                                    '("iget",
                                                                                                      ValidateSAMLEmailsConfig)
                                                                                                    (Description
                                                                                                       ""
                                                                                                     :> (Summary
                                                                                                           "Get config for validateSAMLemails"
                                                                                                         :> (CanThrow
                                                                                                               OperationDenied
                                                                                                             :> (CanThrow
                                                                                                                   'NotATeamMember
                                                                                                                 :> (CanThrow
                                                                                                                       'TeamNotFound
                                                                                                                     :> ("teams"
                                                                                                                         :> (Capture
                                                                                                                               "tid"
                                                                                                                               TeamId
                                                                                                                             :> ("features"
                                                                                                                                 :> ("validateSAMLemails"
                                                                                                                                     :> Get
                                                                                                                                          '[JSON]
                                                                                                                                          (LockableFeature
                                                                                                                                             ValidateSAMLEmailsConfig))))))))))
                                                                                                  :<|> (Named
                                                                                                          '("iput",
                                                                                                            ValidateSAMLEmailsConfig)
                                                                                                          (Description
                                                                                                             ""
                                                                                                           :> (Summary
                                                                                                                 "Put config for validateSAMLemails"
                                                                                                               :> (CanThrow
                                                                                                                     OperationDenied
                                                                                                                   :> (CanThrow
                                                                                                                         'NotATeamMember
                                                                                                                       :> (CanThrow
                                                                                                                             'TeamNotFound
                                                                                                                           :> (CanThrow
                                                                                                                                 TeamFeatureError
                                                                                                                               :> (CanThrowMany
                                                                                                                                     '[]
                                                                                                                                   :> ("teams"
                                                                                                                                       :> (Capture
                                                                                                                                             "tid"
                                                                                                                                             TeamId
                                                                                                                                           :> ("features"
                                                                                                                                               :> ("validateSAMLemails"
                                                                                                                                                   :> (ReqBody
                                                                                                                                                         '[JSON]
                                                                                                                                                         (Feature
                                                                                                                                                            ValidateSAMLEmailsConfig)
                                                                                                                                                       :> Put
                                                                                                                                                            '[JSON]
                                                                                                                                                            (LockableFeature
                                                                                                                                                               ValidateSAMLEmailsConfig)))))))))))))
                                                                                                        :<|> Named
                                                                                                               '("ipatch",
                                                                                                                 ValidateSAMLEmailsConfig)
                                                                                                               (Description
                                                                                                                  ""
                                                                                                                :> (Summary
                                                                                                                      "Patch config for validateSAMLemails"
                                                                                                                    :> (CanThrow
                                                                                                                          OperationDenied
                                                                                                                        :> (CanThrow
                                                                                                                              'NotATeamMember
                                                                                                                            :> (CanThrow
                                                                                                                                  'TeamNotFound
                                                                                                                                :> (CanThrow
                                                                                                                                      TeamFeatureError
                                                                                                                                    :> (CanThrowMany
                                                                                                                                          '[]
                                                                                                                                        :> ("teams"
                                                                                                                                            :> (Capture
                                                                                                                                                  "tid"
                                                                                                                                                  TeamId
                                                                                                                                                :> ("features"
                                                                                                                                                    :> ("validateSAMLemails"
                                                                                                                                                        :> (ReqBody
                                                                                                                                                              '[JSON]
                                                                                                                                                              (LockableFeaturePatch
                                                                                                                                                                 ValidateSAMLEmailsConfig)
                                                                                                                                                            :> Patch
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 (LockableFeature
                                                                                                                                                                    ValidateSAMLEmailsConfig)))))))))))))))
                                                                                                 :<|> ((Named
                                                                                                          '("iget",
                                                                                                            DigitalSignaturesConfig)
                                                                                                          (Description
                                                                                                             ""
                                                                                                           :> (Summary
                                                                                                                 "Get config for digitalSignatures"
                                                                                                               :> (CanThrow
                                                                                                                     OperationDenied
                                                                                                                   :> (CanThrow
                                                                                                                         'NotATeamMember
                                                                                                                       :> (CanThrow
                                                                                                                             'TeamNotFound
                                                                                                                           :> ("teams"
                                                                                                                               :> (Capture
                                                                                                                                     "tid"
                                                                                                                                     TeamId
                                                                                                                                   :> ("features"
                                                                                                                                       :> ("digitalSignatures"
                                                                                                                                           :> Get
                                                                                                                                                '[JSON]
                                                                                                                                                (LockableFeature
                                                                                                                                                   DigitalSignaturesConfig))))))))))
                                                                                                        :<|> (Named
                                                                                                                '("iput",
                                                                                                                  DigitalSignaturesConfig)
                                                                                                                (Description
                                                                                                                   ""
                                                                                                                 :> (Summary
                                                                                                                       "Put config for digitalSignatures"
                                                                                                                     :> (CanThrow
                                                                                                                           OperationDenied
                                                                                                                         :> (CanThrow
                                                                                                                               'NotATeamMember
                                                                                                                             :> (CanThrow
                                                                                                                                   'TeamNotFound
                                                                                                                                 :> (CanThrow
                                                                                                                                       TeamFeatureError
                                                                                                                                     :> (CanThrowMany
                                                                                                                                           '[]
                                                                                                                                         :> ("teams"
                                                                                                                                             :> (Capture
                                                                                                                                                   "tid"
                                                                                                                                                   TeamId
                                                                                                                                                 :> ("features"
                                                                                                                                                     :> ("digitalSignatures"
                                                                                                                                                         :> (ReqBody
                                                                                                                                                               '[JSON]
                                                                                                                                                               (Feature
                                                                                                                                                                  DigitalSignaturesConfig)
                                                                                                                                                             :> Put
                                                                                                                                                                  '[JSON]
                                                                                                                                                                  (LockableFeature
                                                                                                                                                                     DigitalSignaturesConfig)))))))))))))
                                                                                                              :<|> Named
                                                                                                                     '("ipatch",
                                                                                                                       DigitalSignaturesConfig)
                                                                                                                     (Description
                                                                                                                        ""
                                                                                                                      :> (Summary
                                                                                                                            "Patch config for digitalSignatures"
                                                                                                                          :> (CanThrow
                                                                                                                                OperationDenied
                                                                                                                              :> (CanThrow
                                                                                                                                    'NotATeamMember
                                                                                                                                  :> (CanThrow
                                                                                                                                        'TeamNotFound
                                                                                                                                      :> (CanThrow
                                                                                                                                            TeamFeatureError
                                                                                                                                          :> (CanThrowMany
                                                                                                                                                '[]
                                                                                                                                              :> ("teams"
                                                                                                                                                  :> (Capture
                                                                                                                                                        "tid"
                                                                                                                                                        TeamId
                                                                                                                                                      :> ("features"
                                                                                                                                                          :> ("digitalSignatures"
                                                                                                                                                              :> (ReqBody
                                                                                                                                                                    '[JSON]
                                                                                                                                                                    (LockableFeaturePatch
                                                                                                                                                                       DigitalSignaturesConfig)
                                                                                                                                                                  :> Patch
                                                                                                                                                                       '[JSON]
                                                                                                                                                                       (LockableFeature
                                                                                                                                                                          DigitalSignaturesConfig)))))))))))))))
                                                                                                       :<|> ((Named
                                                                                                                '("iget",
                                                                                                                  AppLockConfig)
                                                                                                                (Description
                                                                                                                   ""
                                                                                                                 :> (Summary
                                                                                                                       "Get config for appLock"
                                                                                                                     :> (CanThrow
                                                                                                                           OperationDenied
                                                                                                                         :> (CanThrow
                                                                                                                               'NotATeamMember
                                                                                                                             :> (CanThrow
                                                                                                                                   'TeamNotFound
                                                                                                                                 :> ("teams"
                                                                                                                                     :> (Capture
                                                                                                                                           "tid"
                                                                                                                                           TeamId
                                                                                                                                         :> ("features"
                                                                                                                                             :> ("appLock"
                                                                                                                                                 :> Get
                                                                                                                                                      '[JSON]
                                                                                                                                                      (LockableFeature
                                                                                                                                                         AppLockConfig))))))))))
                                                                                                              :<|> (Named
                                                                                                                      '("iput",
                                                                                                                        AppLockConfig)
                                                                                                                      (Description
                                                                                                                         ""
                                                                                                                       :> (Summary
                                                                                                                             "Put config for appLock"
                                                                                                                           :> (CanThrow
                                                                                                                                 OperationDenied
                                                                                                                               :> (CanThrow
                                                                                                                                     'NotATeamMember
                                                                                                                                   :> (CanThrow
                                                                                                                                         'TeamNotFound
                                                                                                                                       :> (CanThrow
                                                                                                                                             TeamFeatureError
                                                                                                                                           :> (CanThrowMany
                                                                                                                                                 '[]
                                                                                                                                               :> ("teams"
                                                                                                                                                   :> (Capture
                                                                                                                                                         "tid"
                                                                                                                                                         TeamId
                                                                                                                                                       :> ("features"
                                                                                                                                                           :> ("appLock"
                                                                                                                                                               :> (ReqBody
                                                                                                                                                                     '[JSON]
                                                                                                                                                                     (Feature
                                                                                                                                                                        AppLockConfig)
                                                                                                                                                                   :> Put
                                                                                                                                                                        '[JSON]
                                                                                                                                                                        (LockableFeature
                                                                                                                                                                           AppLockConfig)))))))))))))
                                                                                                                    :<|> Named
                                                                                                                           '("ipatch",
                                                                                                                             AppLockConfig)
                                                                                                                           (Description
                                                                                                                              ""
                                                                                                                            :> (Summary
                                                                                                                                  "Patch config for appLock"
                                                                                                                                :> (CanThrow
                                                                                                                                      OperationDenied
                                                                                                                                    :> (CanThrow
                                                                                                                                          'NotATeamMember
                                                                                                                                        :> (CanThrow
                                                                                                                                              'TeamNotFound
                                                                                                                                            :> (CanThrow
                                                                                                                                                  TeamFeatureError
                                                                                                                                                :> (CanThrowMany
                                                                                                                                                      '[]
                                                                                                                                                    :> ("teams"
                                                                                                                                                        :> (Capture
                                                                                                                                                              "tid"
                                                                                                                                                              TeamId
                                                                                                                                                            :> ("features"
                                                                                                                                                                :> ("appLock"
                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                          '[JSON]
                                                                                                                                                                          (LockableFeaturePatch
                                                                                                                                                                             AppLockConfig)
                                                                                                                                                                        :> Patch
                                                                                                                                                                             '[JSON]
                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                AppLockConfig)))))))))))))))
                                                                                                             :<|> ((Named
                                                                                                                      '("iget",
                                                                                                                        FileSharingConfig)
                                                                                                                      (Description
                                                                                                                         ""
                                                                                                                       :> (Summary
                                                                                                                             "Get config for fileSharing"
                                                                                                                           :> (CanThrow
                                                                                                                                 OperationDenied
                                                                                                                               :> (CanThrow
                                                                                                                                     'NotATeamMember
                                                                                                                                   :> (CanThrow
                                                                                                                                         'TeamNotFound
                                                                                                                                       :> ("teams"
                                                                                                                                           :> (Capture
                                                                                                                                                 "tid"
                                                                                                                                                 TeamId
                                                                                                                                               :> ("features"
                                                                                                                                                   :> ("fileSharing"
                                                                                                                                                       :> Get
                                                                                                                                                            '[JSON]
                                                                                                                                                            (LockableFeature
                                                                                                                                                               FileSharingConfig))))))))))
                                                                                                                    :<|> (Named
                                                                                                                            '("iput",
                                                                                                                              FileSharingConfig)
                                                                                                                            (Description
                                                                                                                               ""
                                                                                                                             :> (Summary
                                                                                                                                   "Put config for fileSharing"
                                                                                                                                 :> (CanThrow
                                                                                                                                       OperationDenied
                                                                                                                                     :> (CanThrow
                                                                                                                                           'NotATeamMember
                                                                                                                                         :> (CanThrow
                                                                                                                                               'TeamNotFound
                                                                                                                                             :> (CanThrow
                                                                                                                                                   TeamFeatureError
                                                                                                                                                 :> (CanThrowMany
                                                                                                                                                       '[]
                                                                                                                                                     :> ("teams"
                                                                                                                                                         :> (Capture
                                                                                                                                                               "tid"
                                                                                                                                                               TeamId
                                                                                                                                                             :> ("features"
                                                                                                                                                                 :> ("fileSharing"
                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                           '[JSON]
                                                                                                                                                                           (Feature
                                                                                                                                                                              FileSharingConfig)
                                                                                                                                                                         :> Put
                                                                                                                                                                              '[JSON]
                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                 FileSharingConfig)))))))))))))
                                                                                                                          :<|> Named
                                                                                                                                 '("ipatch",
                                                                                                                                   FileSharingConfig)
                                                                                                                                 (Description
                                                                                                                                    ""
                                                                                                                                  :> (Summary
                                                                                                                                        "Patch config for fileSharing"
                                                                                                                                      :> (CanThrow
                                                                                                                                            OperationDenied
                                                                                                                                          :> (CanThrow
                                                                                                                                                'NotATeamMember
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'TeamNotFound
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        TeamFeatureError
                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                            '[]
                                                                                                                                                          :> ("teams"
                                                                                                                                                              :> (Capture
                                                                                                                                                                    "tid"
                                                                                                                                                                    TeamId
                                                                                                                                                                  :> ("features"
                                                                                                                                                                      :> ("fileSharing"
                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                '[JSON]
                                                                                                                                                                                (LockableFeaturePatch
                                                                                                                                                                                   FileSharingConfig)
                                                                                                                                                                              :> Patch
                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                      FileSharingConfig)))))))))))))))
                                                                                                                   :<|> (Named
                                                                                                                           '("iget",
                                                                                                                             ClassifiedDomainsConfig)
                                                                                                                           (Description
                                                                                                                              ""
                                                                                                                            :> (Summary
                                                                                                                                  "Get config for classifiedDomains"
                                                                                                                                :> (CanThrow
                                                                                                                                      OperationDenied
                                                                                                                                    :> (CanThrow
                                                                                                                                          'NotATeamMember
                                                                                                                                        :> (CanThrow
                                                                                                                                              'TeamNotFound
                                                                                                                                            :> ("teams"
                                                                                                                                                :> (Capture
                                                                                                                                                      "tid"
                                                                                                                                                      TeamId
                                                                                                                                                    :> ("features"
                                                                                                                                                        :> ("classifiedDomains"
                                                                                                                                                            :> Get
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 (LockableFeature
                                                                                                                                                                    ClassifiedDomainsConfig))))))))))
                                                                                                                         :<|> ((Named
                                                                                                                                  '("iget",
                                                                                                                                    ConferenceCallingConfig)
                                                                                                                                  (Description
                                                                                                                                     ""
                                                                                                                                   :> (Summary
                                                                                                                                         "Get config for conferenceCalling"
                                                                                                                                       :> (CanThrow
                                                                                                                                             OperationDenied
                                                                                                                                           :> (CanThrow
                                                                                                                                                 'NotATeamMember
                                                                                                                                               :> (CanThrow
                                                                                                                                                     'TeamNotFound
                                                                                                                                                   :> ("teams"
                                                                                                                                                       :> (Capture
                                                                                                                                                             "tid"
                                                                                                                                                             TeamId
                                                                                                                                                           :> ("features"
                                                                                                                                                               :> ("conferenceCalling"
                                                                                                                                                                   :> Get
                                                                                                                                                                        '[JSON]
                                                                                                                                                                        (LockableFeature
                                                                                                                                                                           ConferenceCallingConfig))))))))))
                                                                                                                                :<|> (Named
                                                                                                                                        '("iput",
                                                                                                                                          ConferenceCallingConfig)
                                                                                                                                        (Description
                                                                                                                                           ""
                                                                                                                                         :> (Summary
                                                                                                                                               "Put config for conferenceCalling"
                                                                                                                                             :> (CanThrow
                                                                                                                                                   OperationDenied
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'NotATeamMember
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'TeamNotFound
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               TeamFeatureError
                                                                                                                                                             :> (CanThrowMany
                                                                                                                                                                   '[]
                                                                                                                                                                 :> ("teams"
                                                                                                                                                                     :> (Capture
                                                                                                                                                                           "tid"
                                                                                                                                                                           TeamId
                                                                                                                                                                         :> ("features"
                                                                                                                                                                             :> ("conferenceCalling"
                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                       (Feature
                                                                                                                                                                                          ConferenceCallingConfig)
                                                                                                                                                                                     :> Put
                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                             ConferenceCallingConfig)))))))))))))
                                                                                                                                      :<|> Named
                                                                                                                                             '("ipatch",
                                                                                                                                               ConferenceCallingConfig)
                                                                                                                                             (Description
                                                                                                                                                ""
                                                                                                                                              :> (Summary
                                                                                                                                                    "Patch config for conferenceCalling"
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        OperationDenied
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'NotATeamMember
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'TeamNotFound
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    TeamFeatureError
                                                                                                                                                                  :> (CanThrowMany
                                                                                                                                                                        '[]
                                                                                                                                                                      :> ("teams"
                                                                                                                                                                          :> (Capture
                                                                                                                                                                                "tid"
                                                                                                                                                                                TeamId
                                                                                                                                                                              :> ("features"
                                                                                                                                                                                  :> ("conferenceCalling"
                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                            (LockableFeaturePatch
                                                                                                                                                                                               ConferenceCallingConfig)
                                                                                                                                                                                          :> Patch
                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                  ConferenceCallingConfig)))))))))))))))
                                                                                                                               :<|> ((Named
                                                                                                                                        '("iget",
                                                                                                                                          SelfDeletingMessagesConfig)
                                                                                                                                        (Description
                                                                                                                                           ""
                                                                                                                                         :> (Summary
                                                                                                                                               "Get config for selfDeletingMessages"
                                                                                                                                             :> (CanThrow
                                                                                                                                                   OperationDenied
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'NotATeamMember
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'TeamNotFound
                                                                                                                                                         :> ("teams"
                                                                                                                                                             :> (Capture
                                                                                                                                                                   "tid"
                                                                                                                                                                   TeamId
                                                                                                                                                                 :> ("features"
                                                                                                                                                                     :> ("selfDeletingMessages"
                                                                                                                                                                         :> Get
                                                                                                                                                                              '[JSON]
                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                 SelfDeletingMessagesConfig))))))))))
                                                                                                                                      :<|> (Named
                                                                                                                                              '("iput",
                                                                                                                                                SelfDeletingMessagesConfig)
                                                                                                                                              (Description
                                                                                                                                                 ""
                                                                                                                                               :> (Summary
                                                                                                                                                     "Put config for selfDeletingMessages"
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         OperationDenied
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'NotATeamMember
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 'TeamNotFound
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     TeamFeatureError
                                                                                                                                                                   :> (CanThrowMany
                                                                                                                                                                         '[]
                                                                                                                                                                       :> ("teams"
                                                                                                                                                                           :> (Capture
                                                                                                                                                                                 "tid"
                                                                                                                                                                                 TeamId
                                                                                                                                                                               :> ("features"
                                                                                                                                                                                   :> ("selfDeletingMessages"
                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                             (Feature
                                                                                                                                                                                                SelfDeletingMessagesConfig)
                                                                                                                                                                                           :> Put
                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                   SelfDeletingMessagesConfig)))))))))))))
                                                                                                                                            :<|> Named
                                                                                                                                                   '("ipatch",
                                                                                                                                                     SelfDeletingMessagesConfig)
                                                                                                                                                   (Description
                                                                                                                                                      ""
                                                                                                                                                    :> (Summary
                                                                                                                                                          "Patch config for selfDeletingMessages"
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              OperationDenied
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          TeamFeatureError
                                                                                                                                                                        :> (CanThrowMany
                                                                                                                                                                              '[]
                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                :> (Capture
                                                                                                                                                                                      "tid"
                                                                                                                                                                                      TeamId
                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                        :> ("selfDeletingMessages"
                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                  (LockableFeaturePatch
                                                                                                                                                                                                     SelfDeletingMessagesConfig)
                                                                                                                                                                                                :> Patch
                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                        SelfDeletingMessagesConfig)))))))))))))))
                                                                                                                                     :<|> ((Named
                                                                                                                                              '("iget",
                                                                                                                                                GuestLinksConfig)
                                                                                                                                              (Description
                                                                                                                                                 ""
                                                                                                                                               :> (Summary
                                                                                                                                                     "Get config for conversationGuestLinks"
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         OperationDenied
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'NotATeamMember
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 'TeamNotFound
                                                                                                                                                               :> ("teams"
                                                                                                                                                                   :> (Capture
                                                                                                                                                                         "tid"
                                                                                                                                                                         TeamId
                                                                                                                                                                       :> ("features"
                                                                                                                                                                           :> ("conversationGuestLinks"
                                                                                                                                                                               :> Get
                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                       GuestLinksConfig))))))))))
                                                                                                                                            :<|> (Named
                                                                                                                                                    '("iput",
                                                                                                                                                      GuestLinksConfig)
                                                                                                                                                    (Description
                                                                                                                                                       ""
                                                                                                                                                     :> (Summary
                                                                                                                                                           "Put config for conversationGuestLinks"
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               OperationDenied
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           TeamFeatureError
                                                                                                                                                                         :> (CanThrowMany
                                                                                                                                                                               '[]
                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                       "tid"
                                                                                                                                                                                       TeamId
                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                         :> ("conversationGuestLinks"
                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                   (Feature
                                                                                                                                                                                                      GuestLinksConfig)
                                                                                                                                                                                                 :> Put
                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                         GuestLinksConfig)))))))))))))
                                                                                                                                                  :<|> Named
                                                                                                                                                         '("ipatch",
                                                                                                                                                           GuestLinksConfig)
                                                                                                                                                         (Description
                                                                                                                                                            ""
                                                                                                                                                          :> (Summary
                                                                                                                                                                "Patch config for conversationGuestLinks"
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    OperationDenied
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                TeamFeatureError
                                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                                    '[]
                                                                                                                                                                                  :> ("teams"
                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                            "tid"
                                                                                                                                                                                            TeamId
                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                              :> ("conversationGuestLinks"
                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                        (LockableFeaturePatch
                                                                                                                                                                                                           GuestLinksConfig)
                                                                                                                                                                                                      :> Patch
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                              GuestLinksConfig)))))))))))))))
                                                                                                                                           :<|> ((Named
                                                                                                                                                    '("iget",
                                                                                                                                                      SndFactorPasswordChallengeConfig)
                                                                                                                                                    (Description
                                                                                                                                                       ""
                                                                                                                                                     :> (Summary
                                                                                                                                                           "Get config for sndFactorPasswordChallenge"
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               OperationDenied
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                     :> ("teams"
                                                                                                                                                                         :> (Capture
                                                                                                                                                                               "tid"
                                                                                                                                                                               TeamId
                                                                                                                                                                             :> ("features"
                                                                                                                                                                                 :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                     :> Get
                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                             SndFactorPasswordChallengeConfig))))))))))
                                                                                                                                                  :<|> (Named
                                                                                                                                                          '("iput",
                                                                                                                                                            SndFactorPasswordChallengeConfig)
                                                                                                                                                          (Description
                                                                                                                                                             ""
                                                                                                                                                           :> (Summary
                                                                                                                                                                 "Put config for sndFactorPasswordChallenge"
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     OperationDenied
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 TeamFeatureError
                                                                                                                                                                               :> (CanThrowMany
                                                                                                                                                                                     '[]
                                                                                                                                                                                   :> ("teams"
                                                                                                                                                                                       :> (Capture
                                                                                                                                                                                             "tid"
                                                                                                                                                                                             TeamId
                                                                                                                                                                                           :> ("features"
                                                                                                                                                                                               :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                         (Feature
                                                                                                                                                                                                            SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                       :> Put
                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                               SndFactorPasswordChallengeConfig)))))))))))))
                                                                                                                                                        :<|> Named
                                                                                                                                                               '("ipatch",
                                                                                                                                                                 SndFactorPasswordChallengeConfig)
                                                                                                                                                               (Description
                                                                                                                                                                  ""
                                                                                                                                                                :> (Summary
                                                                                                                                                                      "Patch config for sndFactorPasswordChallenge"
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          OperationDenied
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      TeamFeatureError
                                                                                                                                                                                    :> (CanThrowMany
                                                                                                                                                                                          '[]
                                                                                                                                                                                        :> ("teams"
                                                                                                                                                                                            :> (Capture
                                                                                                                                                                                                  "tid"
                                                                                                                                                                                                  TeamId
                                                                                                                                                                                                :> ("features"
                                                                                                                                                                                                    :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                              (LockableFeaturePatch
                                                                                                                                                                                                                 SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                            :> Patch
                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                    SndFactorPasswordChallengeConfig)))))))))))))))
                                                                                                                                                 :<|> ((Named
                                                                                                                                                          '("iget",
                                                                                                                                                            MLSConfig)
                                                                                                                                                          (Description
                                                                                                                                                             ""
                                                                                                                                                           :> (Summary
                                                                                                                                                                 "Get config for mls"
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     OperationDenied
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                           :> ("teams"
                                                                                                                                                                               :> (Capture
                                                                                                                                                                                     "tid"
                                                                                                                                                                                     TeamId
                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                       :> ("mls"
                                                                                                                                                                                           :> Get
                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                   MLSConfig))))))))))
                                                                                                                                                        :<|> (Named
                                                                                                                                                                '("iput",
                                                                                                                                                                  MLSConfig)
                                                                                                                                                                (Description
                                                                                                                                                                   ""
                                                                                                                                                                 :> (Summary
                                                                                                                                                                       "Put config for mls"
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           OperationDenied
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       TeamFeatureError
                                                                                                                                                                                     :> (CanThrowMany
                                                                                                                                                                                           '[]
                                                                                                                                                                                         :> ("teams"
                                                                                                                                                                                             :> (Capture
                                                                                                                                                                                                   "tid"
                                                                                                                                                                                                   TeamId
                                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                                     :> ("mls"
                                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                               (Feature
                                                                                                                                                                                                                  MLSConfig)
                                                                                                                                                                                                             :> Put
                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                     MLSConfig)))))))))))))
                                                                                                                                                              :<|> Named
                                                                                                                                                                     '("ipatch",
                                                                                                                                                                       MLSConfig)
                                                                                                                                                                     (Description
                                                                                                                                                                        ""
                                                                                                                                                                      :> (Summary
                                                                                                                                                                            "Patch config for mls"
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                OperationDenied
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            TeamFeatureError
                                                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                                                '[]
                                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                        "tid"
                                                                                                                                                                                                        TeamId
                                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                                          :> ("mls"
                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                    (LockableFeaturePatch
                                                                                                                                                                                                                       MLSConfig)
                                                                                                                                                                                                                  :> Patch
                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                          MLSConfig)))))))))))))))
                                                                                                                                                       :<|> ((Named
                                                                                                                                                                '("iget",
                                                                                                                                                                  ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                (Description
                                                                                                                                                                   ""
                                                                                                                                                                 :> (Summary
                                                                                                                                                                       "Get config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           OperationDenied
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                 :> ("teams"
                                                                                                                                                                                     :> (Capture
                                                                                                                                                                                           "tid"
                                                                                                                                                                                           TeamId
                                                                                                                                                                                         :> ("features"
                                                                                                                                                                                             :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                                 :> Get
                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                         ExposeInvitationURLsToTeamAdminConfig))))))))))
                                                                                                                                                              :<|> (Named
                                                                                                                                                                      '("iput",
                                                                                                                                                                        ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                      (Description
                                                                                                                                                                         ""
                                                                                                                                                                       :> (Summary
                                                                                                                                                                             "Put config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 OperationDenied
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             TeamFeatureError
                                                                                                                                                                                           :> (CanThrowMany
                                                                                                                                                                                                 '[]
                                                                                                                                                                                               :> ("teams"
                                                                                                                                                                                                   :> (Capture
                                                                                                                                                                                                         "tid"
                                                                                                                                                                                                         TeamId
                                                                                                                                                                                                       :> ("features"
                                                                                                                                                                                                           :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                     (Feature
                                                                                                                                                                                                                        ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                                                   :> Put
                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                                           ExposeInvitationURLsToTeamAdminConfig)))))))))))))
                                                                                                                                                                    :<|> Named
                                                                                                                                                                           '("ipatch",
                                                                                                                                                                             ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                           (Description
                                                                                                                                                                              ""
                                                                                                                                                                            :> (Summary
                                                                                                                                                                                  "Patch config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  TeamFeatureError
                                                                                                                                                                                                :> (CanThrowMany
                                                                                                                                                                                                      '[]
                                                                                                                                                                                                    :> ("teams"
                                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                                              "tid"
                                                                                                                                                                                                              TeamId
                                                                                                                                                                                                            :> ("features"
                                                                                                                                                                                                                :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                          (LockableFeaturePatch
                                                                                                                                                                                                                             ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                                                        :> Patch
                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                ExposeInvitationURLsToTeamAdminConfig)))))))))))))))
                                                                                                                                                             :<|> ((Named
                                                                                                                                                                      '("iget",
                                                                                                                                                                        OutlookCalIntegrationConfig)
                                                                                                                                                                      (Description
                                                                                                                                                                         ""
                                                                                                                                                                       :> (Summary
                                                                                                                                                                             "Get config for outlookCalIntegration"
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 OperationDenied
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                 TeamId
                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                   :> ("outlookCalIntegration"
                                                                                                                                                                                                       :> Get
                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                               OutlookCalIntegrationConfig))))))))))
                                                                                                                                                                    :<|> (Named
                                                                                                                                                                            '("iput",
                                                                                                                                                                              OutlookCalIntegrationConfig)
                                                                                                                                                                            (Description
                                                                                                                                                                               ""
                                                                                                                                                                             :> (Summary
                                                                                                                                                                                   "Put config for outlookCalIntegration"
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   TeamFeatureError
                                                                                                                                                                                                 :> (CanThrowMany
                                                                                                                                                                                                       '[]
                                                                                                                                                                                                     :> ("teams"
                                                                                                                                                                                                         :> (Capture
                                                                                                                                                                                                               "tid"
                                                                                                                                                                                                               TeamId
                                                                                                                                                                                                             :> ("features"
                                                                                                                                                                                                                 :> ("outlookCalIntegration"
                                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                           (Feature
                                                                                                                                                                                                                              OutlookCalIntegrationConfig)
                                                                                                                                                                                                                         :> Put
                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                 OutlookCalIntegrationConfig)))))))))))))
                                                                                                                                                                          :<|> Named
                                                                                                                                                                                 '("ipatch",
                                                                                                                                                                                   OutlookCalIntegrationConfig)
                                                                                                                                                                                 (Description
                                                                                                                                                                                    ""
                                                                                                                                                                                  :> (Summary
                                                                                                                                                                                        "Patch config for outlookCalIntegration"
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                                                            '[]
                                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                                      :> ("outlookCalIntegration"
                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                (LockableFeaturePatch
                                                                                                                                                                                                                                   OutlookCalIntegrationConfig)
                                                                                                                                                                                                                              :> Patch
                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                      OutlookCalIntegrationConfig)))))))))))))))
                                                                                                                                                                   :<|> ((Named
                                                                                                                                                                            '("iget",
                                                                                                                                                                              MlsE2EIdConfig)
                                                                                                                                                                            (Description
                                                                                                                                                                               ""
                                                                                                                                                                             :> (Summary
                                                                                                                                                                                   "Get config for mlsE2EId"
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                       "tid"
                                                                                                                                                                                                       TeamId
                                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                                         :> ("mlsE2EId"
                                                                                                                                                                                                             :> Get
                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                     MlsE2EIdConfig))))))))))
                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                  '("iput",
                                                                                                                                                                                    MlsE2EIdConfig)
                                                                                                                                                                                  (Description
                                                                                                                                                                                     ""
                                                                                                                                                                                   :> (Summary
                                                                                                                                                                                         "Put config for mlsE2EId"
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             OperationDenied
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         TeamFeatureError
                                                                                                                                                                                                       :> (CanThrowMany
                                                                                                                                                                                                             '[]
                                                                                                                                                                                                           :> ("teams"
                                                                                                                                                                                                               :> (Capture
                                                                                                                                                                                                                     "tid"
                                                                                                                                                                                                                     TeamId
                                                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                                                       :> ("mlsE2EId"
                                                                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                 (Feature
                                                                                                                                                                                                                                    MlsE2EIdConfig)
                                                                                                                                                                                                                               :> Put
                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                                       MlsE2EIdConfig)))))))))))))
                                                                                                                                                                                :<|> Named
                                                                                                                                                                                       '("ipatch",
                                                                                                                                                                                         MlsE2EIdConfig)
                                                                                                                                                                                       (Description
                                                                                                                                                                                          ""
                                                                                                                                                                                        :> (Summary
                                                                                                                                                                                              "Patch config for mlsE2EId"
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                              TeamFeatureError
                                                                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                                                                  '[]
                                                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                                          "tid"
                                                                                                                                                                                                                          TeamId
                                                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                                                            :> ("mlsE2EId"
                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                      (LockableFeaturePatch
                                                                                                                                                                                                                                         MlsE2EIdConfig)
                                                                                                                                                                                                                                    :> Patch
                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                                            MlsE2EIdConfig)))))))))))))))
                                                                                                                                                                         :<|> ((Named
                                                                                                                                                                                  '("iget",
                                                                                                                                                                                    MlsMigrationConfig)
                                                                                                                                                                                  (Description
                                                                                                                                                                                     ""
                                                                                                                                                                                   :> (Summary
                                                                                                                                                                                         "Get config for mlsMigration"
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             OperationDenied
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                                   :> ("teams"
                                                                                                                                                                                                       :> (Capture
                                                                                                                                                                                                             "tid"
                                                                                                                                                                                                             TeamId
                                                                                                                                                                                                           :> ("features"
                                                                                                                                                                                                               :> ("mlsMigration"
                                                                                                                                                                                                                   :> Get
                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                                           MlsMigrationConfig))))))))))
                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                        '("iput",
                                                                                                                                                                                          MlsMigrationConfig)
                                                                                                                                                                                        (Description
                                                                                                                                                                                           ""
                                                                                                                                                                                         :> (Summary
                                                                                                                                                                                               "Put config for mlsMigration"
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   OperationDenied
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                               TeamFeatureError
                                                                                                                                                                                                             :> (CanThrowMany
                                                                                                                                                                                                                   '[]
                                                                                                                                                                                                                 :> ("teams"
                                                                                                                                                                                                                     :> (Capture
                                                                                                                                                                                                                           "tid"
                                                                                                                                                                                                                           TeamId
                                                                                                                                                                                                                         :> ("features"
                                                                                                                                                                                                                             :> ("mlsMigration"
                                                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                       (Feature
                                                                                                                                                                                                                                          MlsMigrationConfig)
                                                                                                                                                                                                                                     :> Put
                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                                                             MlsMigrationConfig)))))))))))))
                                                                                                                                                                                      :<|> Named
                                                                                                                                                                                             '("ipatch",
                                                                                                                                                                                               MlsMigrationConfig)
                                                                                                                                                                                             (Description
                                                                                                                                                                                                ""
                                                                                                                                                                                              :> (Summary
                                                                                                                                                                                                    "Patch config for mlsMigration"
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        OperationDenied
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                    TeamFeatureError
                                                                                                                                                                                                                  :> (CanThrowMany
                                                                                                                                                                                                                        '[]
                                                                                                                                                                                                                      :> ("teams"
                                                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                                                "tid"
                                                                                                                                                                                                                                TeamId
                                                                                                                                                                                                                              :> ("features"
                                                                                                                                                                                                                                  :> ("mlsMigration"
                                                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                            (LockableFeaturePatch
                                                                                                                                                                                                                                               MlsMigrationConfig)
                                                                                                                                                                                                                                          :> Patch
                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                                  MlsMigrationConfig)))))))))))))))
                                                                                                                                                                               :<|> ((Named
                                                                                                                                                                                        '("iget",
                                                                                                                                                                                          EnforceFileDownloadLocationConfig)
                                                                                                                                                                                        (Description
                                                                                                                                                                                           "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                         :> (Summary
                                                                                                                                                                                               "Get config for enforceFileDownloadLocation"
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   OperationDenied
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                                         :> ("teams"
                                                                                                                                                                                                             :> (Capture
                                                                                                                                                                                                                   "tid"
                                                                                                                                                                                                                   TeamId
                                                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                                                     :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                         :> Get
                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                 EnforceFileDownloadLocationConfig))))))))))
                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                              '("iput",
                                                                                                                                                                                                EnforceFileDownloadLocationConfig)
                                                                                                                                                                                              (Description
                                                                                                                                                                                                 "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                               :> (Summary
                                                                                                                                                                                                     "Put config for enforceFileDownloadLocation"
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                     TeamFeatureError
                                                                                                                                                                                                                   :> (CanThrowMany
                                                                                                                                                                                                                         '[]
                                                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                                                 TeamId
                                                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                                                   :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                             (Feature
                                                                                                                                                                                                                                                EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                           :> Put
                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                                   EnforceFileDownloadLocationConfig)))))))))))))
                                                                                                                                                                                            :<|> Named
                                                                                                                                                                                                   '("ipatch",
                                                                                                                                                                                                     EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                   (Description
                                                                                                                                                                                                      "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                                    :> (Summary
                                                                                                                                                                                                          "Patch config for enforceFileDownloadLocation"
                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                              OperationDenied
                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                          TeamFeatureError
                                                                                                                                                                                                                        :> (CanThrowMany
                                                                                                                                                                                                                              '[]
                                                                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                                                      "tid"
                                                                                                                                                                                                                                      TeamId
                                                                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                                                                        :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                  (LockableFeaturePatch
                                                                                                                                                                                                                                                     EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                                :> Patch
                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                                        EnforceFileDownloadLocationConfig)))))))))))))))
                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                             '("iget",
                                                                                                                                                                                               LimitedEventFanoutConfig)
                                                                                                                                                                                             (Description
                                                                                                                                                                                                ""
                                                                                                                                                                                              :> (Summary
                                                                                                                                                                                                    "Get config for limitedEventFanout"
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        OperationDenied
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                                        "tid"
                                                                                                                                                                                                                        TeamId
                                                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                                                          :> ("limitedEventFanout"
                                                                                                                                                                                                                              :> Get
                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                      LimitedEventFanoutConfig))))))))))
                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                   '("iput",
                                                                                                                                                                                                     LimitedEventFanoutConfig)
                                                                                                                                                                                                   (Description
                                                                                                                                                                                                      ""
                                                                                                                                                                                                    :> (Summary
                                                                                                                                                                                                          "Put config for limitedEventFanout"
                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                              OperationDenied
                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                          TeamFeatureError
                                                                                                                                                                                                                        :> (CanThrowMany
                                                                                                                                                                                                                              '[]
                                                                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                                                      "tid"
                                                                                                                                                                                                                                      TeamId
                                                                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                                                                        :> ("limitedEventFanout"
                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                  (Feature
                                                                                                                                                                                                                                                     LimitedEventFanoutConfig)
                                                                                                                                                                                                                                                :> Put
                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                                        LimitedEventFanoutConfig)))))))))))))
                                                                                                                                                                                                 :<|> Named
                                                                                                                                                                                                        '("ipatch",
                                                                                                                                                                                                          LimitedEventFanoutConfig)
                                                                                                                                                                                                        (Description
                                                                                                                                                                                                           ""
                                                                                                                                                                                                         :> (Summary
                                                                                                                                                                                                               "Patch config for limitedEventFanout"
                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                   OperationDenied
                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                               TeamFeatureError
                                                                                                                                                                                                                             :> (CanThrowMany
                                                                                                                                                                                                                                   '[]
                                                                                                                                                                                                                                 :> ("teams"
                                                                                                                                                                                                                                     :> (Capture
                                                                                                                                                                                                                                           "tid"
                                                                                                                                                                                                                                           TeamId
                                                                                                                                                                                                                                         :> ("features"
                                                                                                                                                                                                                                             :> ("limitedEventFanout"
                                                                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                       (LockableFeaturePatch
                                                                                                                                                                                                                                                          LimitedEventFanoutConfig)
                                                                                                                                                                                                                                                     :> Patch
                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                                                                             LimitedEventFanoutConfig))))))))))))))))))))))))))))))))))
                                                                        :<|> (Named
                                                                                '("ilock",
                                                                                  FileSharingConfig)
                                                                                (Summary
                                                                                   "(Un-)lock fileSharing"
                                                                                 :> (Description ""
                                                                                     :> (CanThrow
                                                                                           'NotATeamMember
                                                                                         :> (CanThrow
                                                                                               'TeamNotFound
                                                                                             :> ("teams"
                                                                                                 :> (Capture
                                                                                                       "tid"
                                                                                                       TeamId
                                                                                                     :> ("features"
                                                                                                         :> ("fileSharing"
                                                                                                             :> (Capture
                                                                                                                   "lockStatus"
                                                                                                                   LockStatus
                                                                                                                 :> Put
                                                                                                                      '[JSON]
                                                                                                                      LockStatusResponse)))))))))
                                                                              :<|> (Named
                                                                                      '("ilock",
                                                                                        ConferenceCallingConfig)
                                                                                      (Summary
                                                                                         "(Un-)lock conferenceCalling"
                                                                                       :> (Description
                                                                                             ""
                                                                                           :> (CanThrow
                                                                                                 'NotATeamMember
                                                                                               :> (CanThrow
                                                                                                     'TeamNotFound
                                                                                                   :> ("teams"
                                                                                                       :> (Capture
                                                                                                             "tid"
                                                                                                             TeamId
                                                                                                           :> ("features"
                                                                                                               :> ("conferenceCalling"
                                                                                                                   :> (Capture
                                                                                                                         "lockStatus"
                                                                                                                         LockStatus
                                                                                                                       :> Put
                                                                                                                            '[JSON]
                                                                                                                            LockStatusResponse)))))))))
                                                                                    :<|> (Named
                                                                                            '("ilock",
                                                                                              SelfDeletingMessagesConfig)
                                                                                            (Summary
                                                                                               "(Un-)lock selfDeletingMessages"
                                                                                             :> (Description
                                                                                                   ""
                                                                                                 :> (CanThrow
                                                                                                       'NotATeamMember
                                                                                                     :> (CanThrow
                                                                                                           'TeamNotFound
                                                                                                         :> ("teams"
                                                                                                             :> (Capture
                                                                                                                   "tid"
                                                                                                                   TeamId
                                                                                                                 :> ("features"
                                                                                                                     :> ("selfDeletingMessages"
                                                                                                                         :> (Capture
                                                                                                                               "lockStatus"
                                                                                                                               LockStatus
                                                                                                                             :> Put
                                                                                                                                  '[JSON]
                                                                                                                                  LockStatusResponse)))))))))
                                                                                          :<|> (Named
                                                                                                  '("ilock",
                                                                                                    GuestLinksConfig)
                                                                                                  (Summary
                                                                                                     "(Un-)lock conversationGuestLinks"
                                                                                                   :> (Description
                                                                                                         ""
                                                                                                       :> (CanThrow
                                                                                                             'NotATeamMember
                                                                                                           :> (CanThrow
                                                                                                                 'TeamNotFound
                                                                                                               :> ("teams"
                                                                                                                   :> (Capture
                                                                                                                         "tid"
                                                                                                                         TeamId
                                                                                                                       :> ("features"
                                                                                                                           :> ("conversationGuestLinks"
                                                                                                                               :> (Capture
                                                                                                                                     "lockStatus"
                                                                                                                                     LockStatus
                                                                                                                                   :> Put
                                                                                                                                        '[JSON]
                                                                                                                                        LockStatusResponse)))))))))
                                                                                                :<|> (Named
                                                                                                        '("ilock",
                                                                                                          SndFactorPasswordChallengeConfig)
                                                                                                        (Summary
                                                                                                           "(Un-)lock sndFactorPasswordChallenge"
                                                                                                         :> (Description
                                                                                                               ""
                                                                                                             :> (CanThrow
                                                                                                                   'NotATeamMember
                                                                                                                 :> (CanThrow
                                                                                                                       'TeamNotFound
                                                                                                                     :> ("teams"
                                                                                                                         :> (Capture
                                                                                                                               "tid"
                                                                                                                               TeamId
                                                                                                                             :> ("features"
                                                                                                                                 :> ("sndFactorPasswordChallenge"
                                                                                                                                     :> (Capture
                                                                                                                                           "lockStatus"
                                                                                                                                           LockStatus
                                                                                                                                         :> Put
                                                                                                                                              '[JSON]
                                                                                                                                              LockStatusResponse)))))))))
                                                                                                      :<|> (Named
                                                                                                              '("ilock",
                                                                                                                MLSConfig)
                                                                                                              (Summary
                                                                                                                 "(Un-)lock mls"
                                                                                                               :> (Description
                                                                                                                     ""
                                                                                                                   :> (CanThrow
                                                                                                                         'NotATeamMember
                                                                                                                       :> (CanThrow
                                                                                                                             'TeamNotFound
                                                                                                                           :> ("teams"
                                                                                                                               :> (Capture
                                                                                                                                     "tid"
                                                                                                                                     TeamId
                                                                                                                                   :> ("features"
                                                                                                                                       :> ("mls"
                                                                                                                                           :> (Capture
                                                                                                                                                 "lockStatus"
                                                                                                                                                 LockStatus
                                                                                                                                               :> Put
                                                                                                                                                    '[JSON]
                                                                                                                                                    LockStatusResponse)))))))))
                                                                                                            :<|> (Named
                                                                                                                    '("ilock",
                                                                                                                      OutlookCalIntegrationConfig)
                                                                                                                    (Summary
                                                                                                                       "(Un-)lock outlookCalIntegration"
                                                                                                                     :> (Description
                                                                                                                           ""
                                                                                                                         :> (CanThrow
                                                                                                                               'NotATeamMember
                                                                                                                             :> (CanThrow
                                                                                                                                   'TeamNotFound
                                                                                                                                 :> ("teams"
                                                                                                                                     :> (Capture
                                                                                                                                           "tid"
                                                                                                                                           TeamId
                                                                                                                                         :> ("features"
                                                                                                                                             :> ("outlookCalIntegration"
                                                                                                                                                 :> (Capture
                                                                                                                                                       "lockStatus"
                                                                                                                                                       LockStatus
                                                                                                                                                     :> Put
                                                                                                                                                          '[JSON]
                                                                                                                                                          LockStatusResponse)))))))))
                                                                                                                  :<|> (Named
                                                                                                                          '("ilock",
                                                                                                                            MlsE2EIdConfig)
                                                                                                                          (Summary
                                                                                                                             "(Un-)lock mlsE2EId"
                                                                                                                           :> (Description
                                                                                                                                 ""
                                                                                                                               :> (CanThrow
                                                                                                                                     'NotATeamMember
                                                                                                                                   :> (CanThrow
                                                                                                                                         'TeamNotFound
                                                                                                                                       :> ("teams"
                                                                                                                                           :> (Capture
                                                                                                                                                 "tid"
                                                                                                                                                 TeamId
                                                                                                                                               :> ("features"
                                                                                                                                                   :> ("mlsE2EId"
                                                                                                                                                       :> (Capture
                                                                                                                                                             "lockStatus"
                                                                                                                                                             LockStatus
                                                                                                                                                           :> Put
                                                                                                                                                                '[JSON]
                                                                                                                                                                LockStatusResponse)))))))))
                                                                                                                        :<|> (Named
                                                                                                                                '("ilock",
                                                                                                                                  MlsMigrationConfig)
                                                                                                                                (Summary
                                                                                                                                   "(Un-)lock mlsMigration"
                                                                                                                                 :> (Description
                                                                                                                                       ""
                                                                                                                                     :> (CanThrow
                                                                                                                                           'NotATeamMember
                                                                                                                                         :> (CanThrow
                                                                                                                                               'TeamNotFound
                                                                                                                                             :> ("teams"
                                                                                                                                                 :> (Capture
                                                                                                                                                       "tid"
                                                                                                                                                       TeamId
                                                                                                                                                     :> ("features"
                                                                                                                                                         :> ("mlsMigration"
                                                                                                                                                             :> (Capture
                                                                                                                                                                   "lockStatus"
                                                                                                                                                                   LockStatus
                                                                                                                                                                 :> Put
                                                                                                                                                                      '[JSON]
                                                                                                                                                                      LockStatusResponse)))))))))
                                                                                                                              :<|> (Named
                                                                                                                                      '("ilock",
                                                                                                                                        EnforceFileDownloadLocationConfig)
                                                                                                                                      (Summary
                                                                                                                                         "(Un-)lock enforceFileDownloadLocation"
                                                                                                                                       :> (Description
                                                                                                                                             "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                           :> (CanThrow
                                                                                                                                                 'NotATeamMember
                                                                                                                                               :> (CanThrow
                                                                                                                                                     'TeamNotFound
                                                                                                                                                   :> ("teams"
                                                                                                                                                       :> (Capture
                                                                                                                                                             "tid"
                                                                                                                                                             TeamId
                                                                                                                                                           :> ("features"
                                                                                                                                                               :> ("enforceFileDownloadLocation"
                                                                                                                                                                   :> (Capture
                                                                                                                                                                         "lockStatus"
                                                                                                                                                                         LockStatus
                                                                                                                                                                       :> Put
                                                                                                                                                                            '[JSON]
                                                                                                                                                                            LockStatusResponse)))))))))
                                                                                                                                    :<|> (Named
                                                                                                                                            '("igetmulti",
                                                                                                                                              SearchVisibilityInboundConfig)
                                                                                                                                            (Summary
                                                                                                                                               "Get team feature status in bulk for feature searchVisibilityInbound"
                                                                                                                                             :> ("features-multi-teams"
                                                                                                                                                 :> ("searchVisibilityInbound"
                                                                                                                                                     :> (ReqBody
                                                                                                                                                           '[JSON]
                                                                                                                                                           TeamFeatureNoConfigMultiRequest
                                                                                                                                                         :> Post
                                                                                                                                                              '[JSON]
                                                                                                                                                              (TeamFeatureNoConfigMultiResponse
                                                                                                                                                                 SearchVisibilityInboundConfig)))))
                                                                                                                                          :<|> Named
                                                                                                                                                 "feature-configs-internal"
                                                                                                                                                 (Summary
                                                                                                                                                    "Get all feature configs (for user/team; if n/a fall back to site config)."
                                                                                                                                                  :> ("feature-configs"
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            OperationDenied
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'NotATeamMember
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                  :> (QueryParam'
                                                                                                                                                                        '[Optional,
                                                                                                                                                                          Strict,
                                                                                                                                                                          Description
                                                                                                                                                                            "Optional user id"]
                                                                                                                                                                        "user_id"
                                                                                                                                                                        UserId
                                                                                                                                                                      :> Get
                                                                                                                                                                           '[JSON]
                                                                                                                                                                           AllTeamFeatures))))))))))))))))))
                                                                       :<|> (IFederationAPI
                                                                             :<|> (IConversationAPI
                                                                                   :<|> IEJPDAPI)))))))))))))
            :<|> (("federation"
                   :> (Named
                         "on-conversation-created"
                         ("on-conversation-created"
                          :> (OriginDomainHeader
                              :> (ReqBody '[JSON] (ConversationCreated ConvId)
                                  :> Post '[JSON] EmptyResponse)))
                       :<|> (Named
                               "get-conversations@v1"
                               (Until 'V2
                                :> ("get-conversations"
                                    :> (OriginDomainHeader
                                        :> (ReqBody '[JSON] GetConversationsRequest
                                            :> Post '[JSON] GetConversationsResponse))))
                             :<|> (Named
                                     "get-conversations"
                                     (From 'V2
                                      :> ("get-conversations"
                                          :> (OriginDomainHeader
                                              :> (ReqBody '[JSON] GetConversationsRequest
                                                  :> Post '[JSON] GetConversationsResponseV2))))
                                   :<|> (Named
                                           "leave-conversation"
                                           (MakesFederatedCall 'Galley "on-conversation-updated"
                                            :> (MakesFederatedCall 'Galley "on-mls-message-sent"
                                                :> (MakesFederatedCall 'Brig "get-users-by-ids"
                                                    :> (MakesFederatedCall 'Brig "api-version"
                                                        :> ("leave-conversation"
                                                            :> (OriginDomainHeader
                                                                :> (ReqBody
                                                                      '[JSON]
                                                                      LeaveConversationRequest
                                                                    :> Post
                                                                         '[JSON]
                                                                         LeaveConversationResponse)))))))
                                         :<|> (Named
                                                 "send-message"
                                                 (MakesFederatedCall 'Galley "on-message-sent"
                                                  :> (MakesFederatedCall 'Brig "get-user-clients"
                                                      :> ("send-message"
                                                          :> (OriginDomainHeader
                                                              :> (ReqBody
                                                                    '[JSON]
                                                                    ProteusMessageSendRequest
                                                                  :> Post
                                                                       '[JSON]
                                                                       MessageSendResponse)))))
                                               :<|> (Named
                                                       "update-conversation"
                                                       (MakesFederatedCall
                                                          'Galley "on-conversation-updated"
                                                        :> (MakesFederatedCall
                                                              'Galley "on-mls-message-sent"
                                                            :> (MakesFederatedCall
                                                                  'Brig "get-users-by-ids"
                                                                :> (MakesFederatedCall
                                                                      'Galley "on-mls-message-sent"
                                                                    :> ("update-conversation"
                                                                        :> (OriginDomainHeader
                                                                            :> (ReqBody
                                                                                  '[JSON]
                                                                                  ConversationUpdateRequest
                                                                                :> Post
                                                                                     '[JSON]
                                                                                     ConversationUpdateResponse)))))))
                                                     :<|> (Named
                                                             "mls-welcome"
                                                             ("mls-welcome"
                                                              :> (OriginDomainHeader
                                                                  :> (ReqBody
                                                                        '[JSON] MLSWelcomeRequest
                                                                      :> Post
                                                                           '[JSON]
                                                                           MLSWelcomeResponse)))
                                                           :<|> (Named
                                                                   "send-mls-message"
                                                                   (MakesFederatedCall
                                                                      'Galley
                                                                      "on-conversation-updated"
                                                                    :> (MakesFederatedCall
                                                                          'Galley
                                                                          "on-mls-message-sent"
                                                                        :> (MakesFederatedCall
                                                                              'Galley
                                                                              "send-mls-message"
                                                                            :> (MakesFederatedCall
                                                                                  'Brig
                                                                                  "get-mls-clients"
                                                                                :> ("send-mls-message"
                                                                                    :> (OriginDomainHeader
                                                                                        :> (ReqBody
                                                                                              '[JSON]
                                                                                              MLSMessageSendRequest
                                                                                            :> Post
                                                                                                 '[JSON]
                                                                                                 MLSMessageResponse)))))))
                                                                 :<|> (Named
                                                                         "send-mls-commit-bundle"
                                                                         (MakesFederatedCall
                                                                            'Galley "mls-welcome"
                                                                          :> (MakesFederatedCall
                                                                                'Galley
                                                                                "on-conversation-updated"
                                                                              :> (MakesFederatedCall
                                                                                    'Galley
                                                                                    "on-mls-message-sent"
                                                                                  :> (MakesFederatedCall
                                                                                        'Galley
                                                                                        "send-mls-commit-bundle"
                                                                                      :> (MakesFederatedCall
                                                                                            'Brig
                                                                                            "get-mls-clients"
                                                                                          :> (MakesFederatedCall
                                                                                                'Brig
                                                                                                "get-users-by-ids"
                                                                                              :> (MakesFederatedCall
                                                                                                    'Brig
                                                                                                    "api-version"
                                                                                                  :> ("send-mls-commit-bundle"
                                                                                                      :> (OriginDomainHeader
                                                                                                          :> (ReqBody
                                                                                                                '[JSON]
                                                                                                                MLSMessageSendRequest
                                                                                                              :> Post
                                                                                                                   '[JSON]
                                                                                                                   MLSMessageResponse))))))))))
                                                                       :<|> (Named
                                                                               "query-group-info"
                                                                               ("query-group-info"
                                                                                :> (OriginDomainHeader
                                                                                    :> (ReqBody
                                                                                          '[JSON]
                                                                                          GetGroupInfoRequest
                                                                                        :> Post
                                                                                             '[JSON]
                                                                                             GetGroupInfoResponse)))
                                                                             :<|> (Named
                                                                                     "update-typing-indicator"
                                                                                     (MakesFederatedCall
                                                                                        'Galley
                                                                                        "on-typing-indicator-updated"
                                                                                      :> ("update-typing-indicator"
                                                                                          :> (OriginDomainHeader
                                                                                              :> (ReqBody
                                                                                                    '[JSON]
                                                                                                    TypingDataUpdateRequest
                                                                                                  :> Post
                                                                                                       '[JSON]
                                                                                                       TypingDataUpdateResponse))))
                                                                                   :<|> (Named
                                                                                           "on-typing-indicator-updated"
                                                                                           ("on-typing-indicator-updated"
                                                                                            :> (OriginDomainHeader
                                                                                                :> (ReqBody
                                                                                                      '[JSON]
                                                                                                      TypingDataUpdated
                                                                                                    :> Post
                                                                                                         '[JSON]
                                                                                                         EmptyResponse)))
                                                                                         :<|> (Named
                                                                                                 "get-sub-conversation"
                                                                                                 (From
                                                                                                    'V1
                                                                                                  :> ("get-sub-conversation"
                                                                                                      :> (OriginDomainHeader
                                                                                                          :> (ReqBody
                                                                                                                '[JSON]
                                                                                                                GetSubConversationsRequest
                                                                                                              :> Post
                                                                                                                   '[JSON]
                                                                                                                   GetSubConversationsResponse))))
                                                                                               :<|> (Named
                                                                                                       "delete-sub-conversation"
                                                                                                       (From
                                                                                                          'V1
                                                                                                        :> ("delete-sub-conversation"
                                                                                                            :> (OriginDomainHeader
                                                                                                                :> (ReqBody
                                                                                                                      '[JSON]
                                                                                                                      DeleteSubConversationFedRequest
                                                                                                                    :> Post
                                                                                                                         '[JSON]
                                                                                                                         DeleteSubConversationResponse))))
                                                                                                     :<|> (Named
                                                                                                             "leave-sub-conversation"
                                                                                                             (MakesFederatedCall
                                                                                                                'Galley
                                                                                                                "on-mls-message-sent"
                                                                                                              :> (From
                                                                                                                    'V1
                                                                                                                  :> ("leave-sub-conversation"
                                                                                                                      :> (OriginDomainHeader
                                                                                                                          :> (ReqBody
                                                                                                                                '[JSON]
                                                                                                                                LeaveSubConversationRequest
                                                                                                                              :> Post
                                                                                                                                   '[JSON]
                                                                                                                                   LeaveSubConversationResponse)))))
                                                                                                           :<|> (Named
                                                                                                                   "get-one2one-conversation@v1"
                                                                                                                   (From
                                                                                                                      'V1
                                                                                                                    :> (Until
                                                                                                                          'V2
                                                                                                                        :> ("get-one2one-conversation"
                                                                                                                            :> (OriginDomainHeader
                                                                                                                                :> (ReqBody
                                                                                                                                      '[JSON]
                                                                                                                                      GetOne2OneConversationRequest
                                                                                                                                    :> Post
                                                                                                                                         '[JSON]
                                                                                                                                         GetOne2OneConversationResponse)))))
                                                                                                                 :<|> (Named
                                                                                                                         "get-one2one-conversation"
                                                                                                                         (From
                                                                                                                            'V2
                                                                                                                          :> ("get-one2one-conversation"
                                                                                                                              :> (OriginDomainHeader
                                                                                                                                  :> (ReqBody
                                                                                                                                        '[JSON]
                                                                                                                                        GetOne2OneConversationRequest
                                                                                                                                      :> Post
                                                                                                                                           '[JSON]
                                                                                                                                           GetOne2OneConversationResponseV2))))
                                                                                                                       :<|> (Named
                                                                                                                               "on-client-removed"
                                                                                                                               ("on-client-removed"
                                                                                                                                :> (OriginDomainHeader
                                                                                                                                    :> (ReqBody
                                                                                                                                          '[JSON]
                                                                                                                                          ClientRemovedRequest
                                                                                                                                        :> Post
                                                                                                                                             '[JSON]
                                                                                                                                             EmptyResponse)))
                                                                                                                             :<|> (Named
                                                                                                                                     "on-message-sent"
                                                                                                                                     ("on-message-sent"
                                                                                                                                      :> (OriginDomainHeader
                                                                                                                                          :> (ReqBody
                                                                                                                                                '[JSON]
                                                                                                                                                (RemoteMessage
                                                                                                                                                   ConvId)
                                                                                                                                              :> Post
                                                                                                                                                   '[JSON]
                                                                                                                                                   EmptyResponse)))
                                                                                                                                   :<|> (Named
                                                                                                                                           "on-mls-message-sent"
                                                                                                                                           ("on-mls-message-sent"
                                                                                                                                            :> (OriginDomainHeader
                                                                                                                                                :> (ReqBody
                                                                                                                                                      '[JSON]
                                                                                                                                                      RemoteMLSMessage
                                                                                                                                                    :> Post
                                                                                                                                                         '[JSON]
                                                                                                                                                         EmptyResponse)))
                                                                                                                                         :<|> (Named
                                                                                                                                                 (Versioned
                                                                                                                                                    'V0
                                                                                                                                                    "on-conversation-updated")
                                                                                                                                                 (Until
                                                                                                                                                    'V1
                                                                                                                                                  :> ("on-conversation-updated"
                                                                                                                                                      :> (OriginDomainHeader
                                                                                                                                                          :> (ReqBody
                                                                                                                                                                '[JSON]
                                                                                                                                                                ConversationUpdateV0
                                                                                                                                                              :> Post
                                                                                                                                                                   '[JSON]
                                                                                                                                                                   EmptyResponse))))
                                                                                                                                               :<|> (Named
                                                                                                                                                       "on-conversation-updated"
                                                                                                                                                       (From
                                                                                                                                                          'V1
                                                                                                                                                        :> ("on-conversation-updated"
                                                                                                                                                            :> (OriginDomainHeader
                                                                                                                                                                :> (ReqBody
                                                                                                                                                                      '[JSON]
                                                                                                                                                                      ConversationUpdate
                                                                                                                                                                    :> Post
                                                                                                                                                                         '[JSON]
                                                                                                                                                                         EmptyResponse))))
                                                                                                                                                     :<|> Named
                                                                                                                                                            "on-user-deleted-conversations"
                                                                                                                                                            ("on-user-deleted-conversations"
                                                                                                                                                             :> (OriginDomainHeader
                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                       '[JSON]
                                                                                                                                                                       UserDeletedConversationsNotification
                                                                                                                                                                     :> Post
                                                                                                                                                                          '[JSON]
                                                                                                                                                                          EmptyResponse))))))))))))))))))))))))))
                  :<|> Raw)))
-> Application
forall api (context :: [*]).
(HasServer api context, ServerContext context) =>
Proxy api -> Context context -> Server api -> Application
Servant.serveWithContext
        (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @CombinedAPI)
        ( Getting Domain Env Domain -> Env -> Domain
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view ((Opts -> Const Domain Opts) -> Env -> Const Domain Env
Lens' Env Opts
options ((Opts -> Const Domain Opts) -> Env -> Const Domain Env)
-> ((Domain -> Const Domain Domain) -> Opts -> Const Domain Opts)
-> Getting Domain Env Domain
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Settings -> Const Domain Settings) -> Opts -> Const Domain Opts
Lens' Opts Settings
settings ((Settings -> Const Domain Settings) -> Opts -> Const Domain Opts)
-> ((Domain -> Const Domain Domain)
    -> Settings -> Const Domain Settings)
-> (Domain -> Const Domain Domain)
-> Opts
-> Const Domain Opts
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Domain -> Const Domain Domain)
-> Settings -> Const Domain Settings
Lens' Settings Domain
federationDomain) Env
e
            Domain
-> Context '[ErrorFormatters] -> Context '[Domain, ErrorFormatters]
forall x (xs :: [*]). x -> Context xs -> Context (x : xs)
:. ErrorFormatters
customFormatters
            ErrorFormatters -> Context '[] -> Context '[ErrorFormatters]
forall x (xs :: [*]). x -> Context xs -> Context (x : xs)
:. Context '[]
Servant.EmptyContext
        )
        ( (forall x.
 Sem
   '[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,
     Error InvalidInput, Error InternalError, Error FederationError,
     Async, Delay, Fail, Embed IO, Error JSONResponse, Resource,
     Final IO]
   x
 -> Handler x)
-> API
     ((Named
         "get-unqualified-conversation"
         (Summary "Get a conversation by ID"
          :> (Until 'V3
              :> (CanThrow 'ConvNotFound
                  :> (CanThrow 'ConvAccessDenied
                      :> (ZLocalUser
                          :> ("conversations"
                              :> (Capture "cnv" ConvId
                                  :> MultiVerb
                                       'GET
                                       '[JSON]
                                       '[VersionedRespond 'V2 200 "Conversation" Conversation]
                                       Conversation)))))))
       :<|> (Named
               "get-unqualified-conversation-legalhold-alias"
               (Summary "Get a conversation by ID (Legalhold alias)"
                :> (Until 'V2
                    :> (CanThrow 'ConvNotFound
                        :> (CanThrow 'ConvAccessDenied
                            :> (ZLocalUser
                                :> ("legalhold"
                                    :> ("conversations"
                                        :> (Capture "cnv" ConvId
                                            :> MultiVerb
                                                 'GET
                                                 '[JSON]
                                                 '[VersionedRespond
                                                     'V2 200 "Conversation" Conversation]
                                                 Conversation))))))))
             :<|> (Named
                     "get-conversation@v2"
                     (Summary "Get a conversation by ID"
                      :> (Until 'V3
                          :> (MakesFederatedCall 'Galley "get-conversations"
                              :> (CanThrow 'ConvNotFound
                                  :> (CanThrow 'ConvAccessDenied
                                      :> (ZLocalUser
                                          :> ("conversations"
                                              :> (QualifiedCapture "cnv" ConvId
                                                  :> MultiVerb
                                                       'GET
                                                       '[JSON]
                                                       '[VersionedRespond
                                                           'V2 200 "Conversation" Conversation]
                                                       Conversation))))))))
                   :<|> (Named
                           "get-conversation@v5"
                           (Summary "Get a conversation by ID"
                            :> (From 'V3
                                :> (Until 'V6
                                    :> (MakesFederatedCall 'Galley "get-conversations"
                                        :> (CanThrow 'ConvNotFound
                                            :> (CanThrow 'ConvAccessDenied
                                                :> (ZLocalUser
                                                    :> ("conversations"
                                                        :> (QualifiedCapture "cnv" ConvId
                                                            :> MultiVerb
                                                                 'GET
                                                                 '[JSON]
                                                                 '[VersionedRespond
                                                                     'V5
                                                                     200
                                                                     "Conversation"
                                                                     Conversation]
                                                                 Conversation)))))))))
                         :<|> (Named
                                 "get-conversation"
                                 (Summary "Get a conversation by ID"
                                  :> (From 'V6
                                      :> (MakesFederatedCall 'Galley "get-conversations"
                                          :> (CanThrow 'ConvNotFound
                                              :> (CanThrow 'ConvAccessDenied
                                                  :> (ZLocalUser
                                                      :> ("conversations"
                                                          :> (QualifiedCapture "cnv" ConvId
                                                              :> Get '[JSON] Conversation))))))))
                               :<|> (Named
                                       "get-conversation-roles"
                                       (Summary
                                          "Get existing roles available for the given conversation"
                                        :> (CanThrow 'ConvNotFound
                                            :> (CanThrow 'ConvAccessDenied
                                                :> (ZLocalUser
                                                    :> ("conversations"
                                                        :> (Capture "cnv" ConvId
                                                            :> ("roles"
                                                                :> Get
                                                                     '[JSON]
                                                                     ConversationRolesList)))))))
                                     :<|> (Named
                                             "get-group-info"
                                             (Summary "Get MLS group information"
                                              :> (From 'V5
                                                  :> (MakesFederatedCall 'Galley "query-group-info"
                                                      :> (CanThrow 'ConvNotFound
                                                          :> (CanThrow 'MLSMissingGroupInfo
                                                              :> (CanThrow 'MLSNotEnabled
                                                                  :> (ZLocalUser
                                                                      :> ("conversations"
                                                                          :> (QualifiedCapture
                                                                                "cnv" ConvId
                                                                              :> ("groupinfo"
                                                                                  :> MultiVerb
                                                                                       'GET
                                                                                       '[MLS]
                                                                                       '[Respond
                                                                                           200
                                                                                           "The group information"
                                                                                           GroupInfoData]
                                                                                       GroupInfoData))))))))))
                                           :<|> (Named
                                                   "list-conversation-ids-unqualified"
                                                   (Summary
                                                      "[deprecated] Get all local conversation IDs."
                                                    :> (Until 'V3
                                                        :> (ZLocalUser
                                                            :> ("conversations"
                                                                :> ("ids"
                                                                    :> (QueryParam'
                                                                          '[Optional, Strict,
                                                                            Description
                                                                              "Conversation ID to start from (exclusive)"]
                                                                          "start"
                                                                          ConvId
                                                                        :> (QueryParam'
                                                                              '[Optional, Strict,
                                                                                Description
                                                                                  "Maximum number of IDs to return"]
                                                                              "size"
                                                                              (Range 1 1000 Int32)
                                                                            :> Get
                                                                                 '[JSON]
                                                                                 (ConversationList
                                                                                    ConvId))))))))
                                                 :<|> (Named
                                                         "list-conversation-ids-v2"
                                                         (Summary "Get all conversation IDs."
                                                          :> (Until 'V3
                                                              :> (Description PaginationDocs
                                                                  :> (ZLocalUser
                                                                      :> ("conversations"
                                                                          :> ("list-ids"
                                                                              :> (ReqBody
                                                                                    '[JSON]
                                                                                    GetPaginatedConversationIds
                                                                                  :> Post
                                                                                       '[JSON]
                                                                                       ConvIdsPage)))))))
                                                       :<|> (Named
                                                               "list-conversation-ids"
                                                               (Summary "Get all conversation IDs."
                                                                :> (From 'V3
                                                                    :> (Description PaginationDocs
                                                                        :> (ZLocalUser
                                                                            :> ("conversations"
                                                                                :> ("list-ids"
                                                                                    :> (ReqBody
                                                                                          '[JSON]
                                                                                          GetPaginatedConversationIds
                                                                                        :> Post
                                                                                             '[JSON]
                                                                                             ConvIdsPage)))))))
                                                             :<|> (Named
                                                                     "get-conversations"
                                                                     (Summary
                                                                        "Get all *local* conversations."
                                                                      :> (Until 'V3
                                                                          :> (Description
                                                                                "Will not return remote conversations.\n\nUse `POST /conversations/list-ids` followed by `POST /conversations/list` instead."
                                                                              :> (ZLocalUser
                                                                                  :> ("conversations"
                                                                                      :> (QueryParam'
                                                                                            '[Optional,
                                                                                              Strict,
                                                                                              Description
                                                                                                "Mutually exclusive with 'start' (at most 32 IDs per request)"]
                                                                                            "ids"
                                                                                            (Range
                                                                                               1
                                                                                               32
                                                                                               (CommaSeparatedList
                                                                                                  ConvId))
                                                                                          :> (QueryParam'
                                                                                                '[Optional,
                                                                                                  Strict,
                                                                                                  Description
                                                                                                    "Conversation ID to start from (exclusive)"]
                                                                                                "start"
                                                                                                ConvId
                                                                                              :> (QueryParam'
                                                                                                    '[Optional,
                                                                                                      Strict,
                                                                                                      Description
                                                                                                        "Maximum number of conversations to return"]
                                                                                                    "size"
                                                                                                    (Range
                                                                                                       1
                                                                                                       500
                                                                                                       Int32)
                                                                                                  :> MultiVerb
                                                                                                       'GET
                                                                                                       '[JSON]
                                                                                                       '[VersionedRespond
                                                                                                           'V2
                                                                                                           200
                                                                                                           "List of local conversations"
                                                                                                           (ConversationList
                                                                                                              Conversation)]
                                                                                                       (ConversationList
                                                                                                          Conversation)))))))))
                                                                   :<|> (Named
                                                                           "list-conversations@v1"
                                                                           (Summary
                                                                              "Get conversation metadata for a list of conversation ids"
                                                                            :> (MakesFederatedCall
                                                                                  'Galley
                                                                                  "get-conversations"
                                                                                :> (Until 'V2
                                                                                    :> (ZLocalUser
                                                                                        :> ("conversations"
                                                                                            :> ("list"
                                                                                                :> ("v2"
                                                                                                    :> (ReqBody
                                                                                                          '[JSON]
                                                                                                          ListConversations
                                                                                                        :> Post
                                                                                                             '[JSON]
                                                                                                             ConversationsResponse))))))))
                                                                         :<|> (Named
                                                                                 "list-conversations@v2"
                                                                                 (Summary
                                                                                    "Get conversation metadata for a list of conversation ids"
                                                                                  :> (MakesFederatedCall
                                                                                        'Galley
                                                                                        "get-conversations"
                                                                                      :> (From 'V2
                                                                                          :> (Until
                                                                                                'V3
                                                                                              :> (ZLocalUser
                                                                                                  :> ("conversations"
                                                                                                      :> ("list"
                                                                                                          :> (ReqBody
                                                                                                                '[JSON]
                                                                                                                ListConversations
                                                                                                              :> MultiVerb
                                                                                                                   'POST
                                                                                                                   '[JSON]
                                                                                                                   '[VersionedRespond
                                                                                                                       'V2
                                                                                                                       200
                                                                                                                       "Conversation page"
                                                                                                                       ConversationsResponse]
                                                                                                                   ConversationsResponse))))))))
                                                                               :<|> (Named
                                                                                       "list-conversations@v5"
                                                                                       (Summary
                                                                                          "Get conversation metadata for a list of conversation ids"
                                                                                        :> (MakesFederatedCall
                                                                                              'Galley
                                                                                              "get-conversations"
                                                                                            :> (From
                                                                                                  'V3
                                                                                                :> (Until
                                                                                                      'V6
                                                                                                    :> (ZLocalUser
                                                                                                        :> ("conversations"
                                                                                                            :> ("list"
                                                                                                                :> (ReqBody
                                                                                                                      '[JSON]
                                                                                                                      ListConversations
                                                                                                                    :> MultiVerb
                                                                                                                         'POST
                                                                                                                         '[JSON]
                                                                                                                         '[VersionedRespond
                                                                                                                             'V5
                                                                                                                             200
                                                                                                                             "Conversation page"
                                                                                                                             ConversationsResponse]
                                                                                                                         ConversationsResponse))))))))
                                                                                     :<|> (Named
                                                                                             "list-conversations"
                                                                                             (Summary
                                                                                                "Get conversation metadata for a list of conversation ids"
                                                                                              :> (MakesFederatedCall
                                                                                                    'Galley
                                                                                                    "get-conversations"
                                                                                                  :> (From
                                                                                                        'V6
                                                                                                      :> (ZLocalUser
                                                                                                          :> ("conversations"
                                                                                                              :> ("list"
                                                                                                                  :> (ReqBody
                                                                                                                        '[JSON]
                                                                                                                        ListConversations
                                                                                                                      :> Post
                                                                                                                           '[JSON]
                                                                                                                           ConversationsResponse)))))))
                                                                                           :<|> (Named
                                                                                                   "get-conversation-by-reusable-code"
                                                                                                   (Summary
                                                                                                      "Get limited conversation information by key/code pair"
                                                                                                    :> (CanThrow
                                                                                                          'CodeNotFound
                                                                                                        :> (CanThrow
                                                                                                              'InvalidConversationPassword
                                                                                                            :> (CanThrow
                                                                                                                  'ConvNotFound
                                                                                                                :> (CanThrow
                                                                                                                      'ConvAccessDenied
                                                                                                                    :> (CanThrow
                                                                                                                          'GuestLinksDisabled
                                                                                                                        :> (CanThrow
                                                                                                                              'NotATeamMember
                                                                                                                            :> (ZLocalUser
                                                                                                                                :> ("conversations"
                                                                                                                                    :> ("join"
                                                                                                                                        :> (QueryParam'
                                                                                                                                              '[Required,
                                                                                                                                                Strict]
                                                                                                                                              "key"
                                                                                                                                              Key
                                                                                                                                            :> (QueryParam'
                                                                                                                                                  '[Required,
                                                                                                                                                    Strict]
                                                                                                                                                  "code"
                                                                                                                                                  Value
                                                                                                                                                :> Get
                                                                                                                                                     '[JSON]
                                                                                                                                                     ConversationCoverView))))))))))))
                                                                                                 :<|> (Named
                                                                                                         "create-group-conversation@v2"
                                                                                                         (Summary
                                                                                                            "Create a new conversation"
                                                                                                          :> (DescriptionOAuthScope
                                                                                                                'WriteConversations
                                                                                                              :> (MakesFederatedCall
                                                                                                                    'Brig
                                                                                                                    "api-version"
                                                                                                                  :> (MakesFederatedCall
                                                                                                                        'Galley
                                                                                                                        "on-conversation-created"
                                                                                                                      :> (MakesFederatedCall
                                                                                                                            'Galley
                                                                                                                            "on-conversation-updated"
                                                                                                                          :> (Until
                                                                                                                                'V3
                                                                                                                              :> (CanThrow
                                                                                                                                    'ConvAccessDenied
                                                                                                                                  :> (CanThrow
                                                                                                                                        'MLSNonEmptyMemberList
                                                                                                                                      :> (CanThrow
                                                                                                                                            'MLSNotEnabled
                                                                                                                                          :> (CanThrow
                                                                                                                                                'NotConnected
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'NotATeamMember
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        OperationDenied
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'MissingLegalholdConsent
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                UnreachableBackendsLegacy
                                                                                                                                                              :> (Description
                                                                                                                                                                    "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                      :> (ZOptConn
                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                              :> (VersionedReqBody
                                                                                                                                                                                    'V2
                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                    NewConv
                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                       'POST
                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                       '[WithHeaders
                                                                                                                                                                                           ConversationHeaders
                                                                                                                                                                                           Conversation
                                                                                                                                                                                           (VersionedRespond
                                                                                                                                                                                              'V2
                                                                                                                                                                                              200
                                                                                                                                                                                              "Conversation existed"
                                                                                                                                                                                              Conversation),
                                                                                                                                                                                         WithHeaders
                                                                                                                                                                                           ConversationHeaders
                                                                                                                                                                                           Conversation
                                                                                                                                                                                           (VersionedRespond
                                                                                                                                                                                              'V2
                                                                                                                                                                                              201
                                                                                                                                                                                              "Conversation created"
                                                                                                                                                                                              Conversation)]
                                                                                                                                                                                       (ResponseForExistedCreated
                                                                                                                                                                                          Conversation))))))))))))))))))))
                                                                                                       :<|> (Named
                                                                                                               "create-group-conversation@v3"
                                                                                                               (Summary
                                                                                                                  "Create a new conversation"
                                                                                                                :> (DescriptionOAuthScope
                                                                                                                      'WriteConversations
                                                                                                                    :> (MakesFederatedCall
                                                                                                                          'Brig
                                                                                                                          "api-version"
                                                                                                                        :> (MakesFederatedCall
                                                                                                                              'Galley
                                                                                                                              "on-conversation-created"
                                                                                                                            :> (MakesFederatedCall
                                                                                                                                  'Galley
                                                                                                                                  "on-conversation-updated"
                                                                                                                                :> (From
                                                                                                                                      'V3
                                                                                                                                    :> (Until
                                                                                                                                          'V4
                                                                                                                                        :> (CanThrow
                                                                                                                                              'ConvAccessDenied
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'MLSNonEmptyMemberList
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'MLSNotEnabled
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'NotConnected
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'NotATeamMember
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  OperationDenied
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'MissingLegalholdConsent
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          UnreachableBackendsLegacy
                                                                                                                                                                        :> (Description
                                                                                                                                                                              "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                :> (ZOptConn
                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                              NewConv
                                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                                 'POST
                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                 '[WithHeaders
                                                                                                                                                                                                     ConversationHeaders
                                                                                                                                                                                                     Conversation
                                                                                                                                                                                                     (VersionedRespond
                                                                                                                                                                                                        'V3
                                                                                                                                                                                                        200
                                                                                                                                                                                                        "Conversation existed"
                                                                                                                                                                                                        Conversation),
                                                                                                                                                                                                   WithHeaders
                                                                                                                                                                                                     ConversationHeaders
                                                                                                                                                                                                     Conversation
                                                                                                                                                                                                     (VersionedRespond
                                                                                                                                                                                                        'V3
                                                                                                                                                                                                        201
                                                                                                                                                                                                        "Conversation created"
                                                                                                                                                                                                        Conversation)]
                                                                                                                                                                                                 (ResponseForExistedCreated
                                                                                                                                                                                                    Conversation)))))))))))))))))))))
                                                                                                             :<|> (Named
                                                                                                                     "create-group-conversation@v5"
                                                                                                                     (Summary
                                                                                                                        "Create a new conversation"
                                                                                                                      :> (MakesFederatedCall
                                                                                                                            'Brig
                                                                                                                            "api-version"
                                                                                                                          :> (MakesFederatedCall
                                                                                                                                'Brig
                                                                                                                                "get-not-fully-connected-backends"
                                                                                                                              :> (MakesFederatedCall
                                                                                                                                    'Galley
                                                                                                                                    "on-conversation-created"
                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                        'Galley
                                                                                                                                        "on-conversation-updated"
                                                                                                                                      :> (From
                                                                                                                                            'V4
                                                                                                                                          :> (Until
                                                                                                                                                'V6
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'ConvAccessDenied
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'MLSNonEmptyMemberList
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'MLSNotEnabled
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'NotConnected
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        OperationDenied
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'MissingLegalholdConsent
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                NonFederatingBackends
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    UnreachableBackends
                                                                                                                                                                                  :> (Description
                                                                                                                                                                                        "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                          :> (ZOptConn
                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                        NewConv
                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                           'POST
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           '[WithHeaders
                                                                                                                                                                                                               ConversationHeaders
                                                                                                                                                                                                               Conversation
                                                                                                                                                                                                               (VersionedRespond
                                                                                                                                                                                                                  'V5
                                                                                                                                                                                                                  200
                                                                                                                                                                                                                  "Conversation existed"
                                                                                                                                                                                                                  Conversation),
                                                                                                                                                                                                             WithHeaders
                                                                                                                                                                                                               ConversationHeaders
                                                                                                                                                                                                               CreateGroupConversation
                                                                                                                                                                                                               (VersionedRespond
                                                                                                                                                                                                                  'V5
                                                                                                                                                                                                                  201
                                                                                                                                                                                                                  "Conversation created"
                                                                                                                                                                                                                  CreateGroupConversation)]
                                                                                                                                                                                                           CreateGroupConversationResponse)))))))))))))))))))))
                                                                                                                   :<|> (Named
                                                                                                                           "create-group-conversation"
                                                                                                                           (Summary
                                                                                                                              "Create a new conversation"
                                                                                                                            :> (MakesFederatedCall
                                                                                                                                  'Brig
                                                                                                                                  "api-version"
                                                                                                                                :> (MakesFederatedCall
                                                                                                                                      'Brig
                                                                                                                                      "get-not-fully-connected-backends"
                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                          'Galley
                                                                                                                                          "on-conversation-created"
                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                              'Galley
                                                                                                                                              "on-conversation-updated"
                                                                                                                                            :> (From
                                                                                                                                                  'V6
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'ConvAccessDenied
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'MLSNonEmptyMemberList
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'MLSNotEnabled
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'NotConnected
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          OperationDenied
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'MissingLegalholdConsent
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  NonFederatingBackends
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      UnreachableBackends
                                                                                                                                                                                    :> (Description
                                                                                                                                                                                          "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                            :> (ZOptConn
                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                          NewConv
                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                             'POST
                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                             '[WithHeaders
                                                                                                                                                                                                                 ConversationHeaders
                                                                                                                                                                                                                 Conversation
                                                                                                                                                                                                                 (VersionedRespond
                                                                                                                                                                                                                    'V6
                                                                                                                                                                                                                    200
                                                                                                                                                                                                                    "Conversation existed"
                                                                                                                                                                                                                    Conversation),
                                                                                                                                                                                                               WithHeaders
                                                                                                                                                                                                                 ConversationHeaders
                                                                                                                                                                                                                 CreateGroupConversation
                                                                                                                                                                                                                 (VersionedRespond
                                                                                                                                                                                                                    'V6
                                                                                                                                                                                                                    201
                                                                                                                                                                                                                    "Conversation created"
                                                                                                                                                                                                                    CreateGroupConversation)]
                                                                                                                                                                                                             CreateGroupConversationResponse))))))))))))))))))))
                                                                                                                         :<|> (Named
                                                                                                                                 "create-self-conversation@v2"
                                                                                                                                 (Summary
                                                                                                                                    "Create a self-conversation"
                                                                                                                                  :> (Until
                                                                                                                                        'V3
                                                                                                                                      :> (ZLocalUser
                                                                                                                                          :> ("conversations"
                                                                                                                                              :> ("self"
                                                                                                                                                  :> MultiVerb
                                                                                                                                                       'POST
                                                                                                                                                       '[JSON]
                                                                                                                                                       '[WithHeaders
                                                                                                                                                           ConversationHeaders
                                                                                                                                                           Conversation
                                                                                                                                                           (VersionedRespond
                                                                                                                                                              'V2
                                                                                                                                                              200
                                                                                                                                                              "Conversation existed"
                                                                                                                                                              Conversation),
                                                                                                                                                         WithHeaders
                                                                                                                                                           ConversationHeaders
                                                                                                                                                           Conversation
                                                                                                                                                           (VersionedRespond
                                                                                                                                                              'V2
                                                                                                                                                              201
                                                                                                                                                              "Conversation created"
                                                                                                                                                              Conversation)]
                                                                                                                                                       (ResponseForExistedCreated
                                                                                                                                                          Conversation))))))
                                                                                                                               :<|> (Named
                                                                                                                                       "create-self-conversation@v5"
                                                                                                                                       (Summary
                                                                                                                                          "Create a self-conversation"
                                                                                                                                        :> (From
                                                                                                                                              'V3
                                                                                                                                            :> (Until
                                                                                                                                                  'V6
                                                                                                                                                :> (ZLocalUser
                                                                                                                                                    :> ("conversations"
                                                                                                                                                        :> ("self"
                                                                                                                                                            :> MultiVerb
                                                                                                                                                                 'POST
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 '[WithHeaders
                                                                                                                                                                     ConversationHeaders
                                                                                                                                                                     Conversation
                                                                                                                                                                     (VersionedRespond
                                                                                                                                                                        'V5
                                                                                                                                                                        200
                                                                                                                                                                        "Conversation existed"
                                                                                                                                                                        Conversation),
                                                                                                                                                                   WithHeaders
                                                                                                                                                                     ConversationHeaders
                                                                                                                                                                     Conversation
                                                                                                                                                                     (VersionedRespond
                                                                                                                                                                        'V5
                                                                                                                                                                        201
                                                                                                                                                                        "Conversation created"
                                                                                                                                                                        Conversation)]
                                                                                                                                                                 (ResponseForExistedCreated
                                                                                                                                                                    Conversation)))))))
                                                                                                                                     :<|> (Named
                                                                                                                                             "create-self-conversation"
                                                                                                                                             (Summary
                                                                                                                                                "Create a self-conversation"
                                                                                                                                              :> (From
                                                                                                                                                    'V6
                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                      :> ("conversations"
                                                                                                                                                          :> ("self"
                                                                                                                                                              :> MultiVerb
                                                                                                                                                                   'POST
                                                                                                                                                                   '[JSON]
                                                                                                                                                                   '[WithHeaders
                                                                                                                                                                       ConversationHeaders
                                                                                                                                                                       Conversation
                                                                                                                                                                       (VersionedRespond
                                                                                                                                                                          'V6
                                                                                                                                                                          200
                                                                                                                                                                          "Conversation existed"
                                                                                                                                                                          Conversation),
                                                                                                                                                                     WithHeaders
                                                                                                                                                                       ConversationHeaders
                                                                                                                                                                       Conversation
                                                                                                                                                                       (VersionedRespond
                                                                                                                                                                          'V6
                                                                                                                                                                          201
                                                                                                                                                                          "Conversation created"
                                                                                                                                                                          Conversation)]
                                                                                                                                                                   (ResponseForExistedCreated
                                                                                                                                                                      Conversation))))))
                                                                                                                                           :<|> (Named
                                                                                                                                                   "get-mls-self-conversation@v5"
                                                                                                                                                   (Summary
                                                                                                                                                      "Get the user's MLS self-conversation"
                                                                                                                                                    :> (From
                                                                                                                                                          'V5
                                                                                                                                                        :> (Until
                                                                                                                                                              'V6
                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                :> ("conversations"
                                                                                                                                                                    :> ("mls-self"
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'MLSNotEnabled
                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                 'GET
                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                 '[VersionedRespond
                                                                                                                                                                                     'V5
                                                                                                                                                                                     200
                                                                                                                                                                                     "The MLS self-conversation"
                                                                                                                                                                                     Conversation]
                                                                                                                                                                                 Conversation)))))))
                                                                                                                                                 :<|> (Named
                                                                                                                                                         "get-mls-self-conversation"
                                                                                                                                                         (Summary
                                                                                                                                                            "Get the user's MLS self-conversation"
                                                                                                                                                          :> (From
                                                                                                                                                                'V6
                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                      :> ("mls-self"
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                'MLSNotEnabled
                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                   'GET
                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                   '[Respond
                                                                                                                                                                                       200
                                                                                                                                                                                       "The MLS self-conversation"
                                                                                                                                                                                       Conversation]
                                                                                                                                                                                   Conversation))))))
                                                                                                                                                       :<|> (Named
                                                                                                                                                               "get-subconversation"
                                                                                                                                                               (Summary
                                                                                                                                                                  "Get information about an MLS subconversation"
                                                                                                                                                                :> (From
                                                                                                                                                                      'V5
                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                          'Galley
                                                                                                                                                                          "get-sub-conversation"
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      'MLSSubConvUnsupportedConvType
                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                            :> (QualifiedCapture
                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                :> ("subconversations"
                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                          "subconv"
                                                                                                                                                                                                          SubConvId
                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                             'GET
                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                             '[Respond
                                                                                                                                                                                                                 200
                                                                                                                                                                                                                 "Subconversation"
                                                                                                                                                                                                                 PublicSubConversation]
                                                                                                                                                                                                             PublicSubConversation)))))))))))
                                                                                                                                                             :<|> (Named
                                                                                                                                                                     "leave-subconversation"
                                                                                                                                                                     (Summary
                                                                                                                                                                        "Leave an MLS subconversation"
                                                                                                                                                                      :> (From
                                                                                                                                                                            'V5
                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                'Galley
                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                    'Galley
                                                                                                                                                                                    "leave-sub-conversation"
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            'ConvAccessDenied
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'MLSProtocolErrorTag
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'MLSStaleMessage
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'MLSNotEnabled
                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                          :> (ZClient
                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                  :> (QualifiedCapture
                                                                                                                                                                                                                        "cnv"
                                                                                                                                                                                                                        ConvId
                                                                                                                                                                                                                      :> ("subconversations"
                                                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                                                "subconv"
                                                                                                                                                                                                                                SubConvId
                                                                                                                                                                                                                              :> ("self"
                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                       'DELETE
                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                       '[RespondEmpty
                                                                                                                                                                                                                                           200
                                                                                                                                                                                                                                           "OK"]
                                                                                                                                                                                                                                       ()))))))))))))))))
                                                                                                                                                                   :<|> (Named
                                                                                                                                                                           "delete-subconversation"
                                                                                                                                                                           (Summary
                                                                                                                                                                              "Delete an MLS subconversation"
                                                                                                                                                                            :> (From
                                                                                                                                                                                  'V5
                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                      'Galley
                                                                                                                                                                                      "delete-sub-conversation"
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'MLSNotEnabled
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'MLSStaleMessage
                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                            :> (QualifiedCapture
                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                :> ("subconversations"
                                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                                          "subconv"
                                                                                                                                                                                                                          SubConvId
                                                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                              DeleteSubConversationRequest
                                                                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                                                                 'DELETE
                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                 '[Respond
                                                                                                                                                                                                                                     200
                                                                                                                                                                                                                                     "Deletion successful"
                                                                                                                                                                                                                                     ()]
                                                                                                                                                                                                                                 ())))))))))))))
                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                 "get-subconversation-group-info"
                                                                                                                                                                                 (Summary
                                                                                                                                                                                    "Get MLS group information of subconversation"
                                                                                                                                                                                  :> (From
                                                                                                                                                                                        'V5
                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                            'Galley
                                                                                                                                                                                            "query-group-info"
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'MLSMissingGroupInfo
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'MLSNotEnabled
                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                              :> (QualifiedCapture
                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                  :> ("subconversations"
                                                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                                                            "subconv"
                                                                                                                                                                                                                            SubConvId
                                                                                                                                                                                                                          :> ("groupinfo"
                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                   'GET
                                                                                                                                                                                                                                   '[MLS]
                                                                                                                                                                                                                                   '[Respond
                                                                                                                                                                                                                                       200
                                                                                                                                                                                                                                       "The group information"
                                                                                                                                                                                                                                       GroupInfoData]
                                                                                                                                                                                                                                   GroupInfoData))))))))))))
                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                       "create-one-to-one-conversation@v2"
                                                                                                                                                                                       (Summary
                                                                                                                                                                                          "Create a 1:1 conversation"
                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                              'Brig
                                                                                                                                                                                              "api-version"
                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                  "on-conversation-created"
                                                                                                                                                                                                :> (Until
                                                                                                                                                                                                      'V3
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                  'NoBindingTeamMembers
                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                      'NonBindingTeam
                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              'NotConnected
                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                          'MissingLegalholdConsent
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              UnreachableBackendsLegacy
                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                        :> ("one2one"
                                                                                                                                                                                                                                                            :> (VersionedReqBody
                                                                                                                                                                                                                                                                  'V2
                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                  NewConv
                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                     '[WithHeaders
                                                                                                                                                                                                                                                                         ConversationHeaders
                                                                                                                                                                                                                                                                         Conversation
                                                                                                                                                                                                                                                                         (VersionedRespond
                                                                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                                                                            200
                                                                                                                                                                                                                                                                            "Conversation existed"
                                                                                                                                                                                                                                                                            Conversation),
                                                                                                                                                                                                                                                                       WithHeaders
                                                                                                                                                                                                                                                                         ConversationHeaders
                                                                                                                                                                                                                                                                         Conversation
                                                                                                                                                                                                                                                                         (VersionedRespond
                                                                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                                                                            201
                                                                                                                                                                                                                                                                            "Conversation created"
                                                                                                                                                                                                                                                                            Conversation)]
                                                                                                                                                                                                                                                                     (ResponseForExistedCreated
                                                                                                                                                                                                                                                                        Conversation))))))))))))))))))))
                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                             "create-one-to-one-conversation"
                                                                                                                                                                                             (Summary
                                                                                                                                                                                                "Create a 1:1 conversation"
                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                    "on-conversation-created"
                                                                                                                                                                                                  :> (From
                                                                                                                                                                                                        'V3
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            'ConvAccessDenied
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                    'NoBindingTeamMembers
                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                        'NonBindingTeam
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                'NotConnected
                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            'MissingLegalholdConsent
                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                UnreachableBackendsLegacy
                                                                                                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                                                                                                  :> (ZConn
                                                                                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                                                                                          :> ("one2one"
                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                    NewConv
                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                       'POST
                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                       '[WithHeaders
                                                                                                                                                                                                                                                                           ConversationHeaders
                                                                                                                                                                                                                                                                           Conversation
                                                                                                                                                                                                                                                                           (VersionedRespond
                                                                                                                                                                                                                                                                              'V3
                                                                                                                                                                                                                                                                              200
                                                                                                                                                                                                                                                                              "Conversation existed"
                                                                                                                                                                                                                                                                              Conversation),
                                                                                                                                                                                                                                                                         WithHeaders
                                                                                                                                                                                                                                                                           ConversationHeaders
                                                                                                                                                                                                                                                                           Conversation
                                                                                                                                                                                                                                                                           (VersionedRespond
                                                                                                                                                                                                                                                                              'V3
                                                                                                                                                                                                                                                                              201
                                                                                                                                                                                                                                                                              "Conversation created"
                                                                                                                                                                                                                                                                              Conversation)]
                                                                                                                                                                                                                                                                       (ResponseForExistedCreated
                                                                                                                                                                                                                                                                          Conversation)))))))))))))))))))
                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                   "get-one-to-one-mls-conversation@v5"
                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                      "Get an MLS 1:1 conversation"
                                                                                                                                                                                                    :> (From
                                                                                                                                                                                                          'V5
                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                              'V6
                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                      'MLSNotEnabled
                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                          'NotConnected
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              'MLSFederatedOne2OneNotSupported
                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                :> ("one2one"
                                                                                                                                                                                                                                    :> (QualifiedCapture
                                                                                                                                                                                                                                          "usr"
                                                                                                                                                                                                                                          UserId
                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                             'GET
                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                             '[VersionedRespond
                                                                                                                                                                                                                                                 'V5
                                                                                                                                                                                                                                                 200
                                                                                                                                                                                                                                                 "MLS 1-1 conversation"
                                                                                                                                                                                                                                                 Conversation]
                                                                                                                                                                                                                                             Conversation))))))))))
                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                         "get-one-to-one-mls-conversation@v6"
                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                            "Get an MLS 1:1 conversation"
                                                                                                                                                                                                          :> (From
                                                                                                                                                                                                                'V6
                                                                                                                                                                                                              :> (Until
                                                                                                                                                                                                                    'V7
                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            'MLSNotEnabled
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                'NotConnected
                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                  :> ("one2one"
                                                                                                                                                                                                                                      :> (QualifiedCapture
                                                                                                                                                                                                                                            "usr"
                                                                                                                                                                                                                                            UserId
                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                               'GET
                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                               '[Respond
                                                                                                                                                                                                                                                   200
                                                                                                                                                                                                                                                   "MLS 1-1 conversation"
                                                                                                                                                                                                                                                   (MLSOne2OneConversation
                                                                                                                                                                                                                                                      MLSPublicKey)]
                                                                                                                                                                                                                                               (MLSOne2OneConversation
                                                                                                                                                                                                                                                  MLSPublicKey))))))))))
                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                               "get-one-to-one-mls-conversation"
                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                  "Get an MLS 1:1 conversation"
                                                                                                                                                                                                                :> (From
                                                                                                                                                                                                                      'V7
                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              'MLSNotEnabled
                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                  'NotConnected
                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                    :> ("one2one"
                                                                                                                                                                                                                                        :> (QualifiedCapture
                                                                                                                                                                                                                                              "usr"
                                                                                                                                                                                                                                              UserId
                                                                                                                                                                                                                                            :> (QueryParam
                                                                                                                                                                                                                                                  "format"
                                                                                                                                                                                                                                                  MLSPublicKeyFormat
                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                     'GET
                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                     '[Respond
                                                                                                                                                                                                                                                         200
                                                                                                                                                                                                                                                         "MLS 1-1 conversation"
                                                                                                                                                                                                                                                         (MLSOne2OneConversation
                                                                                                                                                                                                                                                            SomeKey)]
                                                                                                                                                                                                                                                     (MLSOne2OneConversation
                                                                                                                                                                                                                                                        SomeKey))))))))))
                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                     "add-members-to-conversation-unqualified"
                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                        "Add members to an existing conversation (deprecated)"
                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                            "on-conversation-updated"
                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                                                                              :> (Until
                                                                                                                                                                                                                                    'V2
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                           'AddConversationMember)
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                               'LeaveConversation)
                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                    'InvalidOperation
                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                        'TooManyMembers
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'ConvAccessDenied
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'NotConnected
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        'MissingLegalholdConsent
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            NonFederatingBackends
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                UnreachableBackends
                                                                                                                                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                                                                                                                                  :> (ZConn
                                                                                                                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                                                                                                                "cnv"
                                                                                                                                                                                                                                                                                                ConvId
                                                                                                                                                                                                                                                                                              :> ("members"
                                                                                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                        Invite
                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                           'POST
                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                           ConvUpdateResponses
                                                                                                                                                                                                                                                                                                           (UpdateResult
                                                                                                                                                                                                                                                                                                              Event))))))))))))))))))))))
                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                           "add-members-to-conversation-unqualified2"
                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                              "Add qualified members to an existing conversation."
                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                  "on-conversation-updated"
                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                      "on-mls-message-sent"
                                                                                                                                                                                                                                    :> (Until
                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                 'AddConversationMember)
                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                  ('ActionDenied
                                                                                                                                                                                                                                                     'LeaveConversation)
                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'InvalidOperation
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'TooManyMembers
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          'NotConnected
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'MissingLegalholdConsent
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  NonFederatingBackends
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      UnreachableBackends
                                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                                        :> (ZConn
                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                                    :> ("members"
                                                                                                                                                                                                                                                                                                        :> ("v2"
                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                  InviteQualified
                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                     ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                     (UpdateResult
                                                                                                                                                                                                                                                                                                                        Event)))))))))))))))))))))))
                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                 "add-members-to-conversation"
                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                    "Add qualified members to an existing conversation."
                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                        "on-conversation-updated"
                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                            "on-mls-message-sent"
                                                                                                                                                                                                                                          :> (From
                                                                                                                                                                                                                                                'V2
                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                    ('ActionDenied
                                                                                                                                                                                                                                                       'AddConversationMember)
                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                                           'LeaveConversation)
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'TooManyMembers
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        'ConvAccessDenied
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'NotConnected
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    'MissingLegalholdConsent
                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                        NonFederatingBackends
                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                            UnreachableBackends
                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                      :> (QualifiedCapture
                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                          :> ("members"
                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                    InviteQualified
                                                                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                                                                       'POST
                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                       ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                       (UpdateResult
                                                                                                                                                                                                                                                                                                                          Event))))))))))))))))))))))
                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                       "join-conversation-by-id-unqualified"
                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                          "Join a conversation by its ID (if link access enabled) (deprecated)"
                                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                                              'V5
                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                  "on-conversation-updated"
                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                      'ConvAccessDenied
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'TooManyMembers
                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                        :> (ZConn
                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                :> (Capture'
                                                                                                                                                                                                                                                                                      '[Description
                                                                                                                                                                                                                                                                                          "Conversation ID"]
                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                    :> ("join"
                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                             'POST
                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                             ConvJoinResponses
                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                Event))))))))))))))
                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                             "join-conversation-by-code-unqualified"
                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                "Join a conversation using a reusable code"
                                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                                    "If the guest links team feature is disabled, this will fail with 409 GuestLinksDisabled.Note that this is currently inconsistent (for backwards compatibility reasons) with `POST /conversations/code-check` which responds with 404 CodeNotFound if guest links are disabled."
                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                        "on-conversation-updated"
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'CodeNotFound
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'InvalidConversationPassword
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'ConvAccessDenied
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'GuestLinksDisabled
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                        'TooManyMembers
                                                                                                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                                                                                                          :> (ZConn
                                                                                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                                                                                  :> ("join"
                                                                                                                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                            JoinConversationByCode
                                                                                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                                                                                               'POST
                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                               ConvJoinResponses
                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                  Event)))))))))))))))))
                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                   "code-check"
                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                      "Check validity of a conversation code."
                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                          "If the guest links team feature is disabled, this will fail with 404 CodeNotFound.Note that this is currently inconsistent (for backwards compatibility reasons) with `POST /conversations/join` which responds with 409 GuestLinksDisabled if guest links are disabled."
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'CodeNotFound
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'ConvNotFound
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'InvalidConversationPassword
                                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                                        :> ("code-check"
                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                  ConversationCode
                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                     '[RespondEmpty
                                                                                                                                                                                                                                                                                         200
                                                                                                                                                                                                                                                                                         "Valid"]
                                                                                                                                                                                                                                                                                     ()))))))))
                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                         "create-conversation-code-unqualified@v3"
                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                            "Create or recreate a conversation code"
                                                                                                                                                                                                                                                          :> (Until
                                                                                                                                                                                                                                                                'V4
                                                                                                                                                                                                                                                              :> (DescriptionOAuthScope
                                                                                                                                                                                                                                                                    'WriteConversationsCode
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        'ConvAccessDenied
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'GuestLinksDisabled
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    'CreateConversationCodeConflict
                                                                                                                                                                                                                                                                                  :> (ZUser
                                                                                                                                                                                                                                                                                      :> (ZHostOpt
                                                                                                                                                                                                                                                                                          :> (ZOptConn
                                                                                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                                                                                  :> (Capture'
                                                                                                                                                                                                                                                                                                        '[Description
                                                                                                                                                                                                                                                                                                            "Conversation ID"]
                                                                                                                                                                                                                                                                                                        "cnv"
                                                                                                                                                                                                                                                                                                        ConvId
                                                                                                                                                                                                                                                                                                      :> ("code"
                                                                                                                                                                                                                                                                                                          :> CreateConversationCodeVerb)))))))))))))
                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                               "create-conversation-code-unqualified"
                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                  "Create or recreate a conversation code"
                                                                                                                                                                                                                                                                :> (From
                                                                                                                                                                                                                                                                      'V4
                                                                                                                                                                                                                                                                    :> (DescriptionOAuthScope
                                                                                                                                                                                                                                                                          'WriteConversationsCode
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'ConvAccessDenied
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'ConvNotFound
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      'GuestLinksDisabled
                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                          'CreateConversationCodeConflict
                                                                                                                                                                                                                                                                                        :> (ZUser
                                                                                                                                                                                                                                                                                            :> (ZHostOpt
                                                                                                                                                                                                                                                                                                :> (ZOptConn
                                                                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                                                                        :> (Capture'
                                                                                                                                                                                                                                                                                                              '[Description
                                                                                                                                                                                                                                                                                                                  "Conversation ID"]
                                                                                                                                                                                                                                                                                                              "cnv"
                                                                                                                                                                                                                                                                                                              ConvId
                                                                                                                                                                                                                                                                                                            :> ("code"
                                                                                                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                      CreateConversationCodeRequest
                                                                                                                                                                                                                                                                                                                    :> CreateConversationCodeVerb))))))))))))))
                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                     "get-conversation-guest-links-status"
                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                        "Get the status of the guest links feature for a conversation that potentially has been created by someone from another team."
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'ConvAccessDenied
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                                                              :> (ZUser
                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                      :> (Capture'
                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                                                                                                                              :> ("conversationGuestLinks"
                                                                                                                                                                                                                                                                                                  :> Get
                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                                                                                                          GuestLinksConfig)))))))))
                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                           "remove-code-unqualified"
                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                              "Delete conversation code"
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                                        :> (ZConn
                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                :> (Capture'
                                                                                                                                                                                                                                                                                                      '[Description
                                                                                                                                                                                                                                                                                                          "Conversation ID"]
                                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                                    :> ("code"
                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                             'DELETE
                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                             '[Respond
                                                                                                                                                                                                                                                                                                                 200
                                                                                                                                                                                                                                                                                                                 "Conversation code deleted."
                                                                                                                                                                                                                                                                                                                 Event]
                                                                                                                                                                                                                                                                                                             Event))))))))
                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                 "get-code"
                                                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                                                    "Get existing conversation code"
                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                        'CodeNotFound
                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                            'ConvAccessDenied
                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                    'GuestLinksDisabled
                                                                                                                                                                                                                                                                                                  :> (ZHostOpt
                                                                                                                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                  :> ("code"
                                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                                           'GET
                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                           '[Respond
                                                                                                                                                                                                                                                                                                                               200
                                                                                                                                                                                                                                                                                                                               "Conversation Code"
                                                                                                                                                                                                                                                                                                                               ConversationCodeInfo]
                                                                                                                                                                                                                                                                                                                           ConversationCodeInfo))))))))))
                                                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                                                       "member-typing-unqualified"
                                                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                                                          "Sending typing notifications"
                                                                                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                                                                                              'V3
                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                  "update-typing-indicator"
                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                      "on-typing-indicator-updated"
                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                    :> (Capture'
                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                        :> ("typing"
                                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                  TypingStatus
                                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                     '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                         200
                                                                                                                                                                                                                                                                                                                                         "Notification sent"]
                                                                                                                                                                                                                                                                                                                                     ())))))))))))
                                                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                                                             "member-typing-qualified"
                                                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                                                "Sending typing notifications"
                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                    "update-typing-indicator"
                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                        "on-typing-indicator-updated"
                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                                      :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                          :> ("typing"
                                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                                    TypingStatus
                                                                                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                                                                                       'POST
                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                       '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                           200
                                                                                                                                                                                                                                                                                                                                           "Notification sent"]
                                                                                                                                                                                                                                                                                                                                       ()))))))))))
                                                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                                                   "remove-member-unqualified"
                                                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                                                      "Remove a member from a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                          "leave-conversation"
                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                              "on-conversation-updated"
                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                  "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                      'Brig
                                                                                                                                                                                                                                                                                                                      "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                    :> (Until
                                                                                                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                      ('ActionDenied
                                                                                                                                                                                                                                                                                                                                         'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                :> (Capture'
                                                                                                                                                                                                                                                                                                                                                      '[Description
                                                                                                                                                                                                                                                                                                                                                          "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                                                                                    :> ("members"
                                                                                                                                                                                                                                                                                                                                                        :> (Capture'
                                                                                                                                                                                                                                                                                                                                                              '[Description
                                                                                                                                                                                                                                                                                                                                                                  "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                              "usr"
                                                                                                                                                                                                                                                                                                                                                              UserId
                                                                                                                                                                                                                                                                                                                                                            :> RemoveFromConversationVerb)))))))))))))))
                                                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                                                         "remove-member"
                                                                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                                                                            "Remove a member from a conversation"
                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                "leave-conversation"
                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                                    "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                                        "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                            'Brig
                                                                                                                                                                                                                                                                                                                            "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                                                                                                                           'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                  :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                        '[Description
                                                                                                                                                                                                                                                                                                                                                            "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                        "cnv"
                                                                                                                                                                                                                                                                                                                                                        ConvId
                                                                                                                                                                                                                                                                                                                                                      :> ("members"
                                                                                                                                                                                                                                                                                                                                                          :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                '[Description
                                                                                                                                                                                                                                                                                                                                                                    "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                "usr"
                                                                                                                                                                                                                                                                                                                                                                UserId
                                                                                                                                                                                                                                                                                                                                                              :> RemoveFromConversationVerb))))))))))))))
                                                                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                                                                               "update-other-member-unqualified"
                                                                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                                                                  "Update membership of the specified user (deprecated)"
                                                                                                                                                                                                                                                                                                                :> (Deprecated
                                                                                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                                                                                          "Use `PUT /conversations/:cnv_domain/:cnv/members/:usr_domain/:usr` instead"
                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                              "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                                  "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                      'Brig
                                                                                                                                                                                                                                                                                                                                      "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                        :> (ZConn
                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                  'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                      'ConvMemberNotFound
                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                             'ModifyOtherConversationMember)
                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                              'InvalidTarget
                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                  'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                    :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                                                                        :> ("members"
                                                                                                                                                                                                                                                                                                                                                                            :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                      "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                                  "usr"
                                                                                                                                                                                                                                                                                                                                                                                  UserId
                                                                                                                                                                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                      OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                    :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                         'PUT
                                                                                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                         '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                             200
                                                                                                                                                                                                                                                                                                                                                                                             "Membership updated"]
                                                                                                                                                                                                                                                                                                                                                                                         ()))))))))))))))))))
                                                                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                                                                     "update-other-member"
                                                                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                                                                        "Update membership of the specified user"
                                                                                                                                                                                                                                                                                                                      :> (Description
                                                                                                                                                                                                                                                                                                                            "**Note**: at least one field has to be provided."
                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                                                    "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                        'Brig
                                                                                                                                                                                                                                                                                                                                        "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                          :> (ZConn
                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                        'ConvMemberNotFound
                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                               'ModifyOtherConversationMember)
                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                'InvalidTarget
                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                    'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                      :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                                                                          :> ("members"
                                                                                                                                                                                                                                                                                                                                                                              :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                                                        "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                                    "usr"
                                                                                                                                                                                                                                                                                                                                                                                    UserId
                                                                                                                                                                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                        OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                           'PUT
                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                           '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                               200
                                                                                                                                                                                                                                                                                                                                                                                               "Membership updated"]
                                                                                                                                                                                                                                                                                                                                                                                           ())))))))))))))))))
                                                                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                                                                           "update-conversation-name-deprecated"
                                                                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                                                                              "Update conversation name (deprecated)"
                                                                                                                                                                                                                                                                                                                            :> (Deprecated
                                                                                                                                                                                                                                                                                                                                :> (Description
                                                                                                                                                                                                                                                                                                                                      "Use `/conversations/:domain/:conv/name` instead."
                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                          "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                              "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                  'Brig
                                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                      ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                         'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                        :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                              '[Description
                                                                                                                                                                                                                                                                                                                                                                                  "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                              "cnv"
                                                                                                                                                                                                                                                                                                                                                                              ConvId
                                                                                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                  ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                     'PUT
                                                                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                     (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                        "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                        "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                        Event)
                                                                                                                                                                                                                                                                                                                                                                                     (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                        Event)))))))))))))))
                                                                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                                                                 "update-conversation-name-unqualified"
                                                                                                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                                                                                                    "Update conversation name (deprecated)"
                                                                                                                                                                                                                                                                                                                                  :> (Deprecated
                                                                                                                                                                                                                                                                                                                                      :> (Description
                                                                                                                                                                                                                                                                                                                                            "Use `/conversations/:domain/:conv/name` instead."
                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                                "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                                                                    "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                        'Brig
                                                                                                                                                                                                                                                                                                                                                        "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                               'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                    'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                                                  :> ("name"
                                                                                                                                                                                                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                            ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                               'PUT
                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                  "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                  "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                                  Event)
                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                  Event))))))))))))))))
                                                                                                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                                                                                                       "update-conversation-name"
                                                                                                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                                                                                                          "Update conversation name"
                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                              "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                                                  "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                      'Brig
                                                                                                                                                                                                                                                                                                                                                      "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                             'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                  'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                            :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                :> ("name"
                                                                                                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                          ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                                "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                Event))))))))))))))
                                                                                                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                                                                                                             "update-conversation-message-timer-unqualified"
                                                                                                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                                                                                                "Update the message timer for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                              :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                                                                                                                        "Use `/conversations/:domain/:cnv/message-timer` instead."
                                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                                            "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                    'Brig
                                                                                                                                                                                                                                                                                                                                                                    "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                   'ModifyConversationMessageTimer)
                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                    'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                            'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                                                                  :> ("message-timer"
                                                                                                                                                                                                                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                            ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                               'PUT
                                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                  "Message timer unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                  "Message timer updated"
                                                                                                                                                                                                                                                                                                                                                                                                                  Event)
                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                  Event)))))))))))))))))
                                                                                                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                                                                                                   "update-conversation-message-timer"
                                                                                                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                                                                                                      "Update the message timer for a conversation"
                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                                          "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                                              "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                  'Brig
                                                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                 'ModifyConversationMessageTimer)
                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                          'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                            :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                                :> ("message-timer"
                                                                                                                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                          ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                "Message timer unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                "Message timer updated"
                                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                Event)))))))))))))))
                                                                                                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                                                                                                         "update-conversation-receipt-mode-unqualified"
                                                                                                                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                                                                                                                            "Update receipt mode for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                                          :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                                                                                                                                                    "Use `PUT /conversations/:domain/:cnv/receipt-mode` instead."
                                                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                                                                                        "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                                                            "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                                                                "update-conversation"
                                                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                    'Brig
                                                                                                                                                                                                                                                                                                                                                                                    "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                   'ModifyConversationReceiptMode)
                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                    'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                            'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                  :> ("receipt-mode"
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                            ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                               'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                  "Receipt mode unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                  "Receipt mode updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                  Event)
                                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                  Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                                                                                                                               "update-conversation-receipt-mode"
                                                                                                                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                                                                                                                  "Update receipt mode for a conversation"
                                                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                                                                                      "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                                                          "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                                                              "update-conversation"
                                                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                  'Brig
                                                                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                 'ModifyConversationReceiptMode)
                                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                          'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                            :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                :> ("receipt-mode"
                                                                                                                                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                          ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                "Receipt mode unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                "Receipt mode updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                Event))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                     "update-conversation-access-unqualified"
                                                                                                                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                                                                                                                        "Update access modes for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                                                            "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                    'Brig
                                                                                                                                                                                                                                                                                                                                                                                    "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                  :> (Until
                                                                                                                                                                                                                                                                                                                                                                                        'V3
                                                                                                                                                                                                                                                                                                                                                                                      :> (Description
                                                                                                                                                                                                                                                                                                                                                                                            "Use PUT `/conversations/:domain/:cnv/access` instead."
                                                                                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                           'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                               'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                        'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                            'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                  :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                      :> (VersionedReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                            ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                               'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                  "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                  "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Event)))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                           "update-conversation-access@v2"
                                                                                                                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                                                                                                                              "Update access modes for a conversation"
                                                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                                                                                  "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                                                                                                      "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                          'Brig
                                                                                                                                                                                                                                                                                                                                                                                          "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                                                                                                                                                                                              'V3
                                                                                                                                                                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                             'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                 'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                          'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                              'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                      '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                          "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                    :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                        :> (VersionedReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                              'V2
                                                                                                                                                                                                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                              ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                 'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                 (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                    "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                    "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                    Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                                 (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                    Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                 "update-conversation-access"
                                                                                                                                                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                                                                                                                                                    "Update access modes for a conversation"
                                                                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                                                                                                        "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                                                                            "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                                'Brig
                                                                                                                                                                                                                                                                                                                                                                                                "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                              :> (From
                                                                                                                                                                                                                                                                                                                                                                                                    'V3
                                                                                                                                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                   'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                    ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                       'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                        'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                    'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                      :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                          :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                    ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                       'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                       (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                          "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                          "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                          Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                                       (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                          Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                       "get-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                                                                                                                                                          "Get self membership properties (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                                        :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                    :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                                                                                                        :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                            :> Get
                                                                                                                                                                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                 (Maybe
                                                                                                                                                                                                                                                                                                                                                                                                                    Member)))))))
                                                                                                                                                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                             "update-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                                                                                                                                                "Update self membership properties (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                                              :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                        "Use `/conversations/:domain/:conv/self` instead."
                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                          :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                    MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                       'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                       '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                                                                           200
                                                                                                                                                                                                                                                                                                                                                                                                                                           "Update successful"]
                                                                                                                                                                                                                                                                                                                                                                                                                                       ()))))))))))
                                                                                                                                                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                                   "update-conversation-self"
                                                                                                                                                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                                                                                                                                                      "Update self membership properties"
                                                                                                                                                                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                          "**Note**: at least one field has to be provided."
                                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                        :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                              '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                  "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                              "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                              ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                            :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                      MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                    :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                         'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                         '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                                                                             200
                                                                                                                                                                                                                                                                                                                                                                                                                                             "Update successful"]
                                                                                                                                                                                                                                                                                                                                                                                                                                         ())))))))))
                                                                                                                                                                                                                                                                                                                                                                                                 :<|> Named
                                                                                                                                                                                                                                                                                                                                                                                                        "update-conversation-protocol"
                                                                                                                                                                                                                                                                                                                                                                                                        (Summary
                                                                                                                                                                                                                                                                                                                                                                                                           "Update the protocol of the conversation"
                                                                                                                                                                                                                                                                                                                                                                                                         :> (From
                                                                                                                                                                                                                                                                                                                                                                                                               'V5
                                                                                                                                                                                                                                                                                                                                                                                                             :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                                   "**Note**: Only proteus->mixed upgrade is supported."
                                                                                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                       'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                           'ConvInvalidProtocolTransition
                                                                                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                               ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                                  'LeaveConversation)
                                                                                                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                   'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                       'MLSMigrationCriteriaNotSatisfied
                                                                                                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                                                 :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                                                                     :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                                                         :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                                             :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                                                       "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 :> ("protocol"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ProtocolUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Event))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
      :<|> (TeamConversationAPI
            :<|> ((Named
                     "post-otr-message-unqualified"
                     (Summary
                        "Post an encrypted message to a conversation (accepts JSON or Protobuf)"
                      :> (Description PostOtrDescriptionUnqualified
                          :> (MakesFederatedCall 'Galley "on-message-sent"
                              :> (MakesFederatedCall 'Brig "get-user-clients"
                                  :> (ZLocalUser
                                      :> (ZConn
                                          :> ("conversations"
                                              :> (Capture "cnv" ConvId
                                                  :> ("otr"
                                                      :> ("messages"
                                                          :> (QueryParam
                                                                "ignore_missing" IgnoreMissing
                                                              :> (QueryParam
                                                                    "report_missing" ReportMissing
                                                                  :> (ReqBody
                                                                        '[JSON, Proto] NewOtrMessage
                                                                      :> MultiVerb
                                                                           'POST
                                                                           '[JSON]
                                                                           '[ErrorResponse
                                                                               'ConvNotFound,
                                                                             ErrorResponse
                                                                               'UnknownClient,
                                                                             ErrorResponse
                                                                               'MissingLegalholdConsentOldClients,
                                                                             ErrorResponse
                                                                               'MissingLegalholdConsent,
                                                                             Respond
                                                                               412
                                                                               "Missing clients"
                                                                               ClientMismatch,
                                                                             Respond
                                                                               201
                                                                               "Message sent"
                                                                               ClientMismatch]
                                                                           (PostOtrResponse
                                                                              ClientMismatch))))))))))))))
                   :<|> (Named
                           "post-otr-broadcast-unqualified"
                           (Summary
                              "Broadcast an encrypted message to all team members and all contacts (accepts JSON or Protobuf)"
                            :> (Description PostOtrDescriptionUnqualified
                                :> (ZLocalUser
                                    :> (ZConn
                                        :> (CanThrow 'TeamNotFound
                                            :> (CanThrow 'BroadcastLimitExceeded
                                                :> (CanThrow 'NonBindingTeam
                                                    :> ("broadcast"
                                                        :> ("otr"
                                                            :> ("messages"
                                                                :> (QueryParam
                                                                      "ignore_missing" IgnoreMissing
                                                                    :> (QueryParam
                                                                          "report_missing"
                                                                          ReportMissing
                                                                        :> (ReqBody
                                                                              '[JSON, Proto]
                                                                              NewOtrMessage
                                                                            :> MultiVerb
                                                                                 'POST
                                                                                 '[JSON]
                                                                                 '[ErrorResponse
                                                                                     'ConvNotFound,
                                                                                   ErrorResponse
                                                                                     'UnknownClient,
                                                                                   ErrorResponse
                                                                                     'MissingLegalholdConsentOldClients,
                                                                                   ErrorResponse
                                                                                     'MissingLegalholdConsent,
                                                                                   Respond
                                                                                     412
                                                                                     "Missing clients"
                                                                                     ClientMismatch,
                                                                                   Respond
                                                                                     201
                                                                                     "Message sent"
                                                                                     ClientMismatch]
                                                                                 (PostOtrResponse
                                                                                    ClientMismatch))))))))))))))
                         :<|> (Named
                                 "post-proteus-message"
                                 (Summary
                                    "Post an encrypted message to a conversation (accepts only Protobuf)"
                                  :> (Description PostOtrDescription
                                      :> (MakesFederatedCall 'Brig "get-user-clients"
                                          :> (MakesFederatedCall 'Galley "on-message-sent"
                                              :> (MakesFederatedCall 'Galley "send-message"
                                                  :> (ZLocalUser
                                                      :> (ZConn
                                                          :> ("conversations"
                                                              :> (QualifiedCapture "cnv" ConvId
                                                                  :> ("proteus"
                                                                      :> ("messages"
                                                                          :> (ReqBody
                                                                                '[Proto]
                                                                                (RawProto
                                                                                   QualifiedNewOtrMessage)
                                                                              :> MultiVerb
                                                                                   'POST
                                                                                   '[JSON]
                                                                                   '[ErrorResponse
                                                                                       'ConvNotFound,
                                                                                     ErrorResponse
                                                                                       'UnknownClient,
                                                                                     ErrorResponse
                                                                                       'MissingLegalholdConsentOldClients,
                                                                                     ErrorResponse
                                                                                       'MissingLegalholdConsent,
                                                                                     Respond
                                                                                       412
                                                                                       "Missing clients"
                                                                                       MessageSendingStatus,
                                                                                     Respond
                                                                                       201
                                                                                       "Message sent"
                                                                                       MessageSendingStatus]
                                                                                   (Either
                                                                                      (MessageNotSent
                                                                                         MessageSendingStatus)
                                                                                      MessageSendingStatus)))))))))))))
                               :<|> Named
                                      "post-proteus-broadcast"
                                      (Summary
                                         "Post an encrypted message to all team members and all contacts (accepts only Protobuf)"
                                       :> (Description PostOtrDescription
                                           :> (ZLocalUser
                                               :> (ZConn
                                                   :> (CanThrow 'TeamNotFound
                                                       :> (CanThrow 'BroadcastLimitExceeded
                                                           :> (CanThrow 'NonBindingTeam
                                                               :> ("broadcast"
                                                                   :> ("proteus"
                                                                       :> ("messages"
                                                                           :> (ReqBody
                                                                                 '[Proto]
                                                                                 QualifiedNewOtrMessage
                                                                               :> MultiVerb
                                                                                    'POST
                                                                                    '[JSON]
                                                                                    '[ErrorResponse
                                                                                        'ConvNotFound,
                                                                                      ErrorResponse
                                                                                        'UnknownClient,
                                                                                      ErrorResponse
                                                                                        'MissingLegalholdConsentOldClients,
                                                                                      ErrorResponse
                                                                                        'MissingLegalholdConsent,
                                                                                      Respond
                                                                                        412
                                                                                        "Missing clients"
                                                                                        MessageSendingStatus,
                                                                                      Respond
                                                                                        201
                                                                                        "Message sent"
                                                                                        MessageSendingStatus]
                                                                                    (Either
                                                                                       (MessageNotSent
                                                                                          MessageSendingStatus)
                                                                                       MessageSendingStatus)))))))))))))))
                  :<|> ((Named
                           "post-bot-message-unqualified"
                           (MakesFederatedCall 'Galley "on-message-sent"
                            :> (MakesFederatedCall 'Brig "get-user-clients"
                                :> (ZBot
                                    :> (ZConversation
                                        :> (CanThrow 'ConvNotFound
                                            :> ("bot"
                                                :> ("messages"
                                                    :> (QueryParam "ignore_missing" IgnoreMissing
                                                        :> (QueryParam
                                                              "report_missing" ReportMissing
                                                            :> (ReqBody '[JSON] NewOtrMessage
                                                                :> MultiVerb
                                                                     'POST
                                                                     '[JSON]
                                                                     '[ErrorResponse 'ConvNotFound,
                                                                       ErrorResponse 'UnknownClient,
                                                                       ErrorResponse
                                                                         'MissingLegalholdConsentOldClients,
                                                                       ErrorResponse
                                                                         'MissingLegalholdConsent,
                                                                       Respond
                                                                         412
                                                                         "Missing clients"
                                                                         ClientMismatch,
                                                                       Respond
                                                                         201
                                                                         "Message sent"
                                                                         ClientMismatch]
                                                                     (PostOtrResponse
                                                                        ClientMismatch)))))))))))
                         :<|> Named
                                "get-bot-conversation"
                                (CanThrow 'AccessDenied
                                 :> (CanThrow 'ConvNotFound
                                     :> (CanThrow OperationDenied
                                         :> (CanThrow 'NotATeamMember
                                             :> (CanThrow 'TeamNotFound
                                                 :> ("bot"
                                                     :> ("conversation"
                                                         :> (ZBot
                                                             :> (ZConversation
                                                                 :> Get
                                                                      '[JSON] BotConvView))))))))))
                        :<|> (TeamAPI
                              :<|> ((Named
                                       '("get", SSOConfig)
                                       (Description ""
                                        :> (ZUser
                                            :> (Summary "Get config for sso"
                                                :> (CanThrow OperationDenied
                                                    :> (CanThrow 'NotATeamMember
                                                        :> (CanThrow 'TeamNotFound
                                                            :> ("teams"
                                                                :> (Capture "tid" TeamId
                                                                    :> ("features"
                                                                        :> ("sso"
                                                                            :> Get
                                                                                 '[JSON]
                                                                                 (LockableFeature
                                                                                    SSOConfig)))))))))))
                                     :<|> ((Named
                                              '("get", LegalholdConfig)
                                              (Description ""
                                               :> (ZUser
                                                   :> (Summary "Get config for legalhold"
                                                       :> (CanThrow OperationDenied
                                                           :> (CanThrow 'NotATeamMember
                                                               :> (CanThrow 'TeamNotFound
                                                                   :> ("teams"
                                                                       :> (Capture "tid" TeamId
                                                                           :> ("features"
                                                                               :> ("legalhold"
                                                                                   :> Get
                                                                                        '[JSON]
                                                                                        (LockableFeature
                                                                                           LegalholdConfig)))))))))))
                                            :<|> Named
                                                   '("put", LegalholdConfig)
                                                   (Description ""
                                                    :> (ZUser
                                                        :> (Summary "Put config for legalhold"
                                                            :> (CanThrow OperationDenied
                                                                :> (CanThrow 'NotATeamMember
                                                                    :> (CanThrow 'TeamNotFound
                                                                        :> (CanThrow
                                                                              TeamFeatureError
                                                                            :> (CanThrowMany
                                                                                  '[ 'ActionDenied
                                                                                       'RemoveConversationMember,
                                                                                     'CannotEnableLegalHoldServiceLargeTeam,
                                                                                     'LegalHoldNotEnabled,
                                                                                     'LegalHoldDisableUnimplemented,
                                                                                     'LegalHoldServiceNotRegistered,
                                                                                     'UserLegalHoldIllegalOperation,
                                                                                     'LegalHoldCouldNotBlockConnections]
                                                                                :> ("teams"
                                                                                    :> (Capture
                                                                                          "tid"
                                                                                          TeamId
                                                                                        :> ("features"
                                                                                            :> ("legalhold"
                                                                                                :> (ReqBody
                                                                                                      '[JSON]
                                                                                                      (Feature
                                                                                                         LegalholdConfig)
                                                                                                    :> Put
                                                                                                         '[JSON]
                                                                                                         (LockableFeature
                                                                                                            LegalholdConfig)))))))))))))))
                                           :<|> ((Named
                                                    '("get", SearchVisibilityAvailableConfig)
                                                    (Description ""
                                                     :> (ZUser
                                                         :> (Summary
                                                               "Get config for searchVisibility"
                                                             :> (CanThrow OperationDenied
                                                                 :> (CanThrow 'NotATeamMember
                                                                     :> (CanThrow 'TeamNotFound
                                                                         :> ("teams"
                                                                             :> (Capture
                                                                                   "tid" TeamId
                                                                                 :> ("features"
                                                                                     :> ("searchVisibility"
                                                                                         :> Get
                                                                                              '[JSON]
                                                                                              (LockableFeature
                                                                                                 SearchVisibilityAvailableConfig)))))))))))
                                                  :<|> Named
                                                         '("put", SearchVisibilityAvailableConfig)
                                                         (Description ""
                                                          :> (ZUser
                                                              :> (Summary
                                                                    "Put config for searchVisibility"
                                                                  :> (CanThrow OperationDenied
                                                                      :> (CanThrow 'NotATeamMember
                                                                          :> (CanThrow 'TeamNotFound
                                                                              :> (CanThrow
                                                                                    TeamFeatureError
                                                                                  :> (CanThrowMany
                                                                                        '[]
                                                                                      :> ("teams"
                                                                                          :> (Capture
                                                                                                "tid"
                                                                                                TeamId
                                                                                              :> ("features"
                                                                                                  :> ("searchVisibility"
                                                                                                      :> (ReqBody
                                                                                                            '[JSON]
                                                                                                            (Feature
                                                                                                               SearchVisibilityAvailableConfig)
                                                                                                          :> Put
                                                                                                               '[JSON]
                                                                                                               (LockableFeature
                                                                                                                  SearchVisibilityAvailableConfig)))))))))))))))
                                                 :<|> (SearchVisibilityGet
                                                       :<|> (SearchVisibilitySet
                                                             :<|> (Named
                                                                     '("get",
                                                                       ValidateSAMLEmailsConfig)
                                                                     (Description ""
                                                                      :> (ZUser
                                                                          :> (Summary
                                                                                "Get config for validateSAMLemails"
                                                                              :> (CanThrow
                                                                                    OperationDenied
                                                                                  :> (CanThrow
                                                                                        'NotATeamMember
                                                                                      :> (CanThrow
                                                                                            'TeamNotFound
                                                                                          :> ("teams"
                                                                                              :> (Capture
                                                                                                    "tid"
                                                                                                    TeamId
                                                                                                  :> ("features"
                                                                                                      :> ("validateSAMLemails"
                                                                                                          :> Get
                                                                                                               '[JSON]
                                                                                                               (LockableFeature
                                                                                                                  ValidateSAMLEmailsConfig)))))))))))
                                                                   :<|> (Named
                                                                           '("get",
                                                                             DigitalSignaturesConfig)
                                                                           (Description ""
                                                                            :> (ZUser
                                                                                :> (Summary
                                                                                      "Get config for digitalSignatures"
                                                                                    :> (CanThrow
                                                                                          OperationDenied
                                                                                        :> (CanThrow
                                                                                              'NotATeamMember
                                                                                            :> (CanThrow
                                                                                                  'TeamNotFound
                                                                                                :> ("teams"
                                                                                                    :> (Capture
                                                                                                          "tid"
                                                                                                          TeamId
                                                                                                        :> ("features"
                                                                                                            :> ("digitalSignatures"
                                                                                                                :> Get
                                                                                                                     '[JSON]
                                                                                                                     (LockableFeature
                                                                                                                        DigitalSignaturesConfig)))))))))))
                                                                         :<|> ((Named
                                                                                  '("get",
                                                                                    AppLockConfig)
                                                                                  (Description ""
                                                                                   :> (ZUser
                                                                                       :> (Summary
                                                                                             "Get config for appLock"
                                                                                           :> (CanThrow
                                                                                                 OperationDenied
                                                                                               :> (CanThrow
                                                                                                     'NotATeamMember
                                                                                                   :> (CanThrow
                                                                                                         'TeamNotFound
                                                                                                       :> ("teams"
                                                                                                           :> (Capture
                                                                                                                 "tid"
                                                                                                                 TeamId
                                                                                                               :> ("features"
                                                                                                                   :> ("appLock"
                                                                                                                       :> Get
                                                                                                                            '[JSON]
                                                                                                                            (LockableFeature
                                                                                                                               AppLockConfig)))))))))))
                                                                                :<|> Named
                                                                                       '("put",
                                                                                         AppLockConfig)
                                                                                       (Description
                                                                                          ""
                                                                                        :> (ZUser
                                                                                            :> (Summary
                                                                                                  "Put config for appLock"
                                                                                                :> (CanThrow
                                                                                                      OperationDenied
                                                                                                    :> (CanThrow
                                                                                                          'NotATeamMember
                                                                                                        :> (CanThrow
                                                                                                              'TeamNotFound
                                                                                                            :> (CanThrow
                                                                                                                  TeamFeatureError
                                                                                                                :> (CanThrowMany
                                                                                                                      '[]
                                                                                                                    :> ("teams"
                                                                                                                        :> (Capture
                                                                                                                              "tid"
                                                                                                                              TeamId
                                                                                                                            :> ("features"
                                                                                                                                :> ("appLock"
                                                                                                                                    :> (ReqBody
                                                                                                                                          '[JSON]
                                                                                                                                          (Feature
                                                                                                                                             AppLockConfig)
                                                                                                                                        :> Put
                                                                                                                                             '[JSON]
                                                                                                                                             (LockableFeature
                                                                                                                                                AppLockConfig)))))))))))))))
                                                                               :<|> ((Named
                                                                                        '("get",
                                                                                          FileSharingConfig)
                                                                                        (Description
                                                                                           ""
                                                                                         :> (ZUser
                                                                                             :> (Summary
                                                                                                   "Get config for fileSharing"
                                                                                                 :> (CanThrow
                                                                                                       OperationDenied
                                                                                                     :> (CanThrow
                                                                                                           'NotATeamMember
                                                                                                         :> (CanThrow
                                                                                                               'TeamNotFound
                                                                                                             :> ("teams"
                                                                                                                 :> (Capture
                                                                                                                       "tid"
                                                                                                                       TeamId
                                                                                                                     :> ("features"
                                                                                                                         :> ("fileSharing"
                                                                                                                             :> Get
                                                                                                                                  '[JSON]
                                                                                                                                  (LockableFeature
                                                                                                                                     FileSharingConfig)))))))))))
                                                                                      :<|> Named
                                                                                             '("put",
                                                                                               FileSharingConfig)
                                                                                             (Description
                                                                                                ""
                                                                                              :> (ZUser
                                                                                                  :> (Summary
                                                                                                        "Put config for fileSharing"
                                                                                                      :> (CanThrow
                                                                                                            OperationDenied
                                                                                                          :> (CanThrow
                                                                                                                'NotATeamMember
                                                                                                              :> (CanThrow
                                                                                                                    'TeamNotFound
                                                                                                                  :> (CanThrow
                                                                                                                        TeamFeatureError
                                                                                                                      :> (CanThrowMany
                                                                                                                            '[]
                                                                                                                          :> ("teams"
                                                                                                                              :> (Capture
                                                                                                                                    "tid"
                                                                                                                                    TeamId
                                                                                                                                  :> ("features"
                                                                                                                                      :> ("fileSharing"
                                                                                                                                          :> (ReqBody
                                                                                                                                                '[JSON]
                                                                                                                                                (Feature
                                                                                                                                                   FileSharingConfig)
                                                                                                                                              :> Put
                                                                                                                                                   '[JSON]
                                                                                                                                                   (LockableFeature
                                                                                                                                                      FileSharingConfig)))))))))))))))
                                                                                     :<|> (Named
                                                                                             '("get",
                                                                                               ClassifiedDomainsConfig)
                                                                                             (Description
                                                                                                ""
                                                                                              :> (ZUser
                                                                                                  :> (Summary
                                                                                                        "Get config for classifiedDomains"
                                                                                                      :> (CanThrow
                                                                                                            OperationDenied
                                                                                                          :> (CanThrow
                                                                                                                'NotATeamMember
                                                                                                              :> (CanThrow
                                                                                                                    'TeamNotFound
                                                                                                                  :> ("teams"
                                                                                                                      :> (Capture
                                                                                                                            "tid"
                                                                                                                            TeamId
                                                                                                                          :> ("features"
                                                                                                                              :> ("classifiedDomains"
                                                                                                                                  :> Get
                                                                                                                                       '[JSON]
                                                                                                                                       (LockableFeature
                                                                                                                                          ClassifiedDomainsConfig)))))))))))
                                                                                           :<|> ((Named
                                                                                                    '("get",
                                                                                                      ConferenceCallingConfig)
                                                                                                    (Description
                                                                                                       ""
                                                                                                     :> (ZUser
                                                                                                         :> (Summary
                                                                                                               "Get config for conferenceCalling"
                                                                                                             :> (CanThrow
                                                                                                                   OperationDenied
                                                                                                                 :> (CanThrow
                                                                                                                       'NotATeamMember
                                                                                                                     :> (CanThrow
                                                                                                                           'TeamNotFound
                                                                                                                         :> ("teams"
                                                                                                                             :> (Capture
                                                                                                                                   "tid"
                                                                                                                                   TeamId
                                                                                                                                 :> ("features"
                                                                                                                                     :> ("conferenceCalling"
                                                                                                                                         :> Get
                                                                                                                                              '[JSON]
                                                                                                                                              (LockableFeature
                                                                                                                                                 ConferenceCallingConfig)))))))))))
                                                                                                  :<|> Named
                                                                                                         '("put",
                                                                                                           ConferenceCallingConfig)
                                                                                                         (Description
                                                                                                            ""
                                                                                                          :> (ZUser
                                                                                                              :> (Summary
                                                                                                                    "Put config for conferenceCalling"
                                                                                                                  :> (CanThrow
                                                                                                                        OperationDenied
                                                                                                                      :> (CanThrow
                                                                                                                            'NotATeamMember
                                                                                                                          :> (CanThrow
                                                                                                                                'TeamNotFound
                                                                                                                              :> (CanThrow
                                                                                                                                    TeamFeatureError
                                                                                                                                  :> (CanThrowMany
                                                                                                                                        '[]
                                                                                                                                      :> ("teams"
                                                                                                                                          :> (Capture
                                                                                                                                                "tid"
                                                                                                                                                TeamId
                                                                                                                                              :> ("features"
                                                                                                                                                  :> ("conferenceCalling"
                                                                                                                                                      :> (ReqBody
                                                                                                                                                            '[JSON]
                                                                                                                                                            (Feature
                                                                                                                                                               ConferenceCallingConfig)
                                                                                                                                                          :> Put
                                                                                                                                                               '[JSON]
                                                                                                                                                               (LockableFeature
                                                                                                                                                                  ConferenceCallingConfig)))))))))))))))
                                                                                                 :<|> ((Named
                                                                                                          '("get",
                                                                                                            SelfDeletingMessagesConfig)
                                                                                                          (Description
                                                                                                             ""
                                                                                                           :> (ZUser
                                                                                                               :> (Summary
                                                                                                                     "Get config for selfDeletingMessages"
                                                                                                                   :> (CanThrow
                                                                                                                         OperationDenied
                                                                                                                       :> (CanThrow
                                                                                                                             'NotATeamMember
                                                                                                                           :> (CanThrow
                                                                                                                                 'TeamNotFound
                                                                                                                               :> ("teams"
                                                                                                                                   :> (Capture
                                                                                                                                         "tid"
                                                                                                                                         TeamId
                                                                                                                                       :> ("features"
                                                                                                                                           :> ("selfDeletingMessages"
                                                                                                                                               :> Get
                                                                                                                                                    '[JSON]
                                                                                                                                                    (LockableFeature
                                                                                                                                                       SelfDeletingMessagesConfig)))))))))))
                                                                                                        :<|> Named
                                                                                                               '("put",
                                                                                                                 SelfDeletingMessagesConfig)
                                                                                                               (Description
                                                                                                                  ""
                                                                                                                :> (ZUser
                                                                                                                    :> (Summary
                                                                                                                          "Put config for selfDeletingMessages"
                                                                                                                        :> (CanThrow
                                                                                                                              OperationDenied
                                                                                                                            :> (CanThrow
                                                                                                                                  'NotATeamMember
                                                                                                                                :> (CanThrow
                                                                                                                                      'TeamNotFound
                                                                                                                                    :> (CanThrow
                                                                                                                                          TeamFeatureError
                                                                                                                                        :> (CanThrowMany
                                                                                                                                              '[]
                                                                                                                                            :> ("teams"
                                                                                                                                                :> (Capture
                                                                                                                                                      "tid"
                                                                                                                                                      TeamId
                                                                                                                                                    :> ("features"
                                                                                                                                                        :> ("selfDeletingMessages"
                                                                                                                                                            :> (ReqBody
                                                                                                                                                                  '[JSON]
                                                                                                                                                                  (Feature
                                                                                                                                                                     SelfDeletingMessagesConfig)
                                                                                                                                                                :> Put
                                                                                                                                                                     '[JSON]
                                                                                                                                                                     (LockableFeature
                                                                                                                                                                        SelfDeletingMessagesConfig)))))))))))))))
                                                                                                       :<|> ((Named
                                                                                                                '("get",
                                                                                                                  GuestLinksConfig)
                                                                                                                (Description
                                                                                                                   ""
                                                                                                                 :> (ZUser
                                                                                                                     :> (Summary
                                                                                                                           "Get config for conversationGuestLinks"
                                                                                                                         :> (CanThrow
                                                                                                                               OperationDenied
                                                                                                                             :> (CanThrow
                                                                                                                                   'NotATeamMember
                                                                                                                                 :> (CanThrow
                                                                                                                                       'TeamNotFound
                                                                                                                                     :> ("teams"
                                                                                                                                         :> (Capture
                                                                                                                                               "tid"
                                                                                                                                               TeamId
                                                                                                                                             :> ("features"
                                                                                                                                                 :> ("conversationGuestLinks"
                                                                                                                                                     :> Get
                                                                                                                                                          '[JSON]
                                                                                                                                                          (LockableFeature
                                                                                                                                                             GuestLinksConfig)))))))))))
                                                                                                              :<|> Named
                                                                                                                     '("put",
                                                                                                                       GuestLinksConfig)
                                                                                                                     (Description
                                                                                                                        ""
                                                                                                                      :> (ZUser
                                                                                                                          :> (Summary
                                                                                                                                "Put config for conversationGuestLinks"
                                                                                                                              :> (CanThrow
                                                                                                                                    OperationDenied
                                                                                                                                  :> (CanThrow
                                                                                                                                        'NotATeamMember
                                                                                                                                      :> (CanThrow
                                                                                                                                            'TeamNotFound
                                                                                                                                          :> (CanThrow
                                                                                                                                                TeamFeatureError
                                                                                                                                              :> (CanThrowMany
                                                                                                                                                    '[]
                                                                                                                                                  :> ("teams"
                                                                                                                                                      :> (Capture
                                                                                                                                                            "tid"
                                                                                                                                                            TeamId
                                                                                                                                                          :> ("features"
                                                                                                                                                              :> ("conversationGuestLinks"
                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                        '[JSON]
                                                                                                                                                                        (Feature
                                                                                                                                                                           GuestLinksConfig)
                                                                                                                                                                      :> Put
                                                                                                                                                                           '[JSON]
                                                                                                                                                                           (LockableFeature
                                                                                                                                                                              GuestLinksConfig)))))))))))))))
                                                                                                             :<|> ((Named
                                                                                                                      '("get",
                                                                                                                        SndFactorPasswordChallengeConfig)
                                                                                                                      (Description
                                                                                                                         ""
                                                                                                                       :> (ZUser
                                                                                                                           :> (Summary
                                                                                                                                 "Get config for sndFactorPasswordChallenge"
                                                                                                                               :> (CanThrow
                                                                                                                                     OperationDenied
                                                                                                                                   :> (CanThrow
                                                                                                                                         'NotATeamMember
                                                                                                                                       :> (CanThrow
                                                                                                                                             'TeamNotFound
                                                                                                                                           :> ("teams"
                                                                                                                                               :> (Capture
                                                                                                                                                     "tid"
                                                                                                                                                     TeamId
                                                                                                                                                   :> ("features"
                                                                                                                                                       :> ("sndFactorPasswordChallenge"
                                                                                                                                                           :> Get
                                                                                                                                                                '[JSON]
                                                                                                                                                                (LockableFeature
                                                                                                                                                                   SndFactorPasswordChallengeConfig)))))))))))
                                                                                                                    :<|> Named
                                                                                                                           '("put",
                                                                                                                             SndFactorPasswordChallengeConfig)
                                                                                                                           (Description
                                                                                                                              ""
                                                                                                                            :> (ZUser
                                                                                                                                :> (Summary
                                                                                                                                      "Put config for sndFactorPasswordChallenge"
                                                                                                                                    :> (CanThrow
                                                                                                                                          OperationDenied
                                                                                                                                        :> (CanThrow
                                                                                                                                              'NotATeamMember
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'TeamNotFound
                                                                                                                                                :> (CanThrow
                                                                                                                                                      TeamFeatureError
                                                                                                                                                    :> (CanThrowMany
                                                                                                                                                          '[]
                                                                                                                                                        :> ("teams"
                                                                                                                                                            :> (Capture
                                                                                                                                                                  "tid"
                                                                                                                                                                  TeamId
                                                                                                                                                                :> ("features"
                                                                                                                                                                    :> ("sndFactorPasswordChallenge"
                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                              '[JSON]
                                                                                                                                                                              (Feature
                                                                                                                                                                                 SndFactorPasswordChallengeConfig)
                                                                                                                                                                            :> Put
                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                    SndFactorPasswordChallengeConfig)))))))))))))))
                                                                                                                   :<|> ((Named
                                                                                                                            '("get",
                                                                                                                              MLSConfig)
                                                                                                                            (From
                                                                                                                               'V5
                                                                                                                             :> (Description
                                                                                                                                   ""
                                                                                                                                 :> (ZUser
                                                                                                                                     :> (Summary
                                                                                                                                           "Get config for mls"
                                                                                                                                         :> (CanThrow
                                                                                                                                               OperationDenied
                                                                                                                                             :> (CanThrow
                                                                                                                                                   'NotATeamMember
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'TeamNotFound
                                                                                                                                                     :> ("teams"
                                                                                                                                                         :> (Capture
                                                                                                                                                               "tid"
                                                                                                                                                               TeamId
                                                                                                                                                             :> ("features"
                                                                                                                                                                 :> ("mls"
                                                                                                                                                                     :> Get
                                                                                                                                                                          '[JSON]
                                                                                                                                                                          (LockableFeature
                                                                                                                                                                             MLSConfig))))))))))))
                                                                                                                          :<|> Named
                                                                                                                                 '("put",
                                                                                                                                   MLSConfig)
                                                                                                                                 (From
                                                                                                                                    'V5
                                                                                                                                  :> (Description
                                                                                                                                        ""
                                                                                                                                      :> (ZUser
                                                                                                                                          :> (Summary
                                                                                                                                                "Put config for mls"
                                                                                                                                              :> (CanThrow
                                                                                                                                                    OperationDenied
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'NotATeamMember
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'TeamNotFound
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                TeamFeatureError
                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                    '[]
                                                                                                                                                                  :> ("teams"
                                                                                                                                                                      :> (Capture
                                                                                                                                                                            "tid"
                                                                                                                                                                            TeamId
                                                                                                                                                                          :> ("features"
                                                                                                                                                                              :> ("mls"
                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                        (Feature
                                                                                                                                                                                           MLSConfig)
                                                                                                                                                                                      :> Put
                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                              MLSConfig))))))))))))))))
                                                                                                                         :<|> ((Named
                                                                                                                                  '("get",
                                                                                                                                    ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                  (Description
                                                                                                                                     ""
                                                                                                                                   :> (ZUser
                                                                                                                                       :> (Summary
                                                                                                                                             "Get config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                           :> (CanThrow
                                                                                                                                                 OperationDenied
                                                                                                                                               :> (CanThrow
                                                                                                                                                     'NotATeamMember
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'TeamNotFound
                                                                                                                                                       :> ("teams"
                                                                                                                                                           :> (Capture
                                                                                                                                                                 "tid"
                                                                                                                                                                 TeamId
                                                                                                                                                               :> ("features"
                                                                                                                                                                   :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                       :> Get
                                                                                                                                                                            '[JSON]
                                                                                                                                                                            (LockableFeature
                                                                                                                                                                               ExposeInvitationURLsToTeamAdminConfig)))))))))))
                                                                                                                                :<|> Named
                                                                                                                                       '("put",
                                                                                                                                         ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                       (Description
                                                                                                                                          ""
                                                                                                                                        :> (ZUser
                                                                                                                                            :> (Summary
                                                                                                                                                  "Put config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                :> (CanThrow
                                                                                                                                                      OperationDenied
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'NotATeamMember
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'TeamNotFound
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  TeamFeatureError
                                                                                                                                                                :> (CanThrowMany
                                                                                                                                                                      '[]
                                                                                                                                                                    :> ("teams"
                                                                                                                                                                        :> (Capture
                                                                                                                                                                              "tid"
                                                                                                                                                                              TeamId
                                                                                                                                                                            :> ("features"
                                                                                                                                                                                :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                          (Feature
                                                                                                                                                                                             ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                        :> Put
                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                ExposeInvitationURLsToTeamAdminConfig)))))))))))))))
                                                                                                                               :<|> ((Named
                                                                                                                                        '("get",
                                                                                                                                          SearchVisibilityInboundConfig)
                                                                                                                                        (Description
                                                                                                                                           ""
                                                                                                                                         :> (ZUser
                                                                                                                                             :> (Summary
                                                                                                                                                   "Get config for searchVisibilityInbound"
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       OperationDenied
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'NotATeamMember
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'TeamNotFound
                                                                                                                                                             :> ("teams"
                                                                                                                                                                 :> (Capture
                                                                                                                                                                       "tid"
                                                                                                                                                                       TeamId
                                                                                                                                                                     :> ("features"
                                                                                                                                                                         :> ("searchVisibilityInbound"
                                                                                                                                                                             :> Get
                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                     SearchVisibilityInboundConfig)))))))))))
                                                                                                                                      :<|> Named
                                                                                                                                             '("put",
                                                                                                                                               SearchVisibilityInboundConfig)
                                                                                                                                             (Description
                                                                                                                                                ""
                                                                                                                                              :> (ZUser
                                                                                                                                                  :> (Summary
                                                                                                                                                        "Put config for searchVisibilityInbound"
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            OperationDenied
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'NotATeamMember
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                            '[]
                                                                                                                                                                          :> ("teams"
                                                                                                                                                                              :> (Capture
                                                                                                                                                                                    "tid"
                                                                                                                                                                                    TeamId
                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                      :> ("searchVisibilityInbound"
                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                (Feature
                                                                                                                                                                                                   SearchVisibilityInboundConfig)
                                                                                                                                                                                              :> Put
                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                      SearchVisibilityInboundConfig)))))))))))))))
                                                                                                                                     :<|> ((Named
                                                                                                                                              '("get",
                                                                                                                                                OutlookCalIntegrationConfig)
                                                                                                                                              (Description
                                                                                                                                                 ""
                                                                                                                                               :> (ZUser
                                                                                                                                                   :> (Summary
                                                                                                                                                         "Get config for outlookCalIntegration"
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             OperationDenied
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 'NotATeamMember
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                   :> ("teams"
                                                                                                                                                                       :> (Capture
                                                                                                                                                                             "tid"
                                                                                                                                                                             TeamId
                                                                                                                                                                           :> ("features"
                                                                                                                                                                               :> ("outlookCalIntegration"
                                                                                                                                                                                   :> Get
                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                           OutlookCalIntegrationConfig)))))))))))
                                                                                                                                            :<|> Named
                                                                                                                                                   '("put",
                                                                                                                                                     OutlookCalIntegrationConfig)
                                                                                                                                                   (Description
                                                                                                                                                      ""
                                                                                                                                                    :> (ZUser
                                                                                                                                                        :> (Summary
                                                                                                                                                              "Put config for outlookCalIntegration"
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  OperationDenied
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              TeamFeatureError
                                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                                  '[]
                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                          "tid"
                                                                                                                                                                                          TeamId
                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                            :> ("outlookCalIntegration"
                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                      (Feature
                                                                                                                                                                                                         OutlookCalIntegrationConfig)
                                                                                                                                                                                                    :> Put
                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                            OutlookCalIntegrationConfig)))))))))))))))
                                                                                                                                           :<|> (Named
                                                                                                                                                   '("get",
                                                                                                                                                     MlsE2EIdConfig)
                                                                                                                                                   (From
                                                                                                                                                      'V5
                                                                                                                                                    :> (Description
                                                                                                                                                          ""
                                                                                                                                                        :> (ZUser
                                                                                                                                                            :> (Summary
                                                                                                                                                                  "Get config for mlsE2EId"
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      OperationDenied
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                :> (Capture
                                                                                                                                                                                      "tid"
                                                                                                                                                                                      TeamId
                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                        :> ("mlsE2EId"
                                                                                                                                                                                            :> Get
                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                    MlsE2EIdConfig))))))))))))
                                                                                                                                                 :<|> (Named
                                                                                                                                                         "put-MlsE2EIdConfig@v5"
                                                                                                                                                         (From
                                                                                                                                                            'V5
                                                                                                                                                          :> (Until
                                                                                                                                                                'V6
                                                                                                                                                              :> (ZUser
                                                                                                                                                                  :> (Summary
                                                                                                                                                                        "Put config for mlsE2EId"
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            OperationDenied
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                                            '[]
                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                      :> ("mlsE2EId"
                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                (Feature
                                                                                                                                                                                                                   MlsE2EIdConfig)
                                                                                                                                                                                                              :> Put
                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                      MlsE2EIdConfig)))))))))))))))
                                                                                                                                                       :<|> (Named
                                                                                                                                                               '("put",
                                                                                                                                                                 MlsE2EIdConfig)
                                                                                                                                                               (From
                                                                                                                                                                  'V6
                                                                                                                                                                :> (Description
                                                                                                                                                                      ""
                                                                                                                                                                    :> (ZUser
                                                                                                                                                                        :> (Summary
                                                                                                                                                                              "Put config for mlsE2EId"
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              TeamFeatureError
                                                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                                                  '[]
                                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                          "tid"
                                                                                                                                                                                                          TeamId
                                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                                            :> ("mlsE2EId"
                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                      (Feature
                                                                                                                                                                                                                         MlsE2EIdConfig)
                                                                                                                                                                                                                    :> Put
                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                            MlsE2EIdConfig)))))))))))))))
                                                                                                                                                             :<|> ((Named
                                                                                                                                                                      '("get",
                                                                                                                                                                        MlsMigrationConfig)
                                                                                                                                                                      (From
                                                                                                                                                                         'V5
                                                                                                                                                                       :> (Description
                                                                                                                                                                             ""
                                                                                                                                                                           :> (ZUser
                                                                                                                                                                               :> (Summary
                                                                                                                                                                                     "Get config for mlsMigration"
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                               :> ("teams"
                                                                                                                                                                                                   :> (Capture
                                                                                                                                                                                                         "tid"
                                                                                                                                                                                                         TeamId
                                                                                                                                                                                                       :> ("features"
                                                                                                                                                                                                           :> ("mlsMigration"
                                                                                                                                                                                                               :> Get
                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                       MlsMigrationConfig))))))))))))
                                                                                                                                                                    :<|> Named
                                                                                                                                                                           '("put",
                                                                                                                                                                             MlsMigrationConfig)
                                                                                                                                                                           (From
                                                                                                                                                                              'V5
                                                                                                                                                                            :> (Description
                                                                                                                                                                                  ""
                                                                                                                                                                                :> (ZUser
                                                                                                                                                                                    :> (Summary
                                                                                                                                                                                          "Put config for mlsMigration"
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              OperationDenied
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          TeamFeatureError
                                                                                                                                                                                                        :> (CanThrowMany
                                                                                                                                                                                                              '[]
                                                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                                      "tid"
                                                                                                                                                                                                                      TeamId
                                                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                                                        :> ("mlsMigration"
                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                  (Feature
                                                                                                                                                                                                                                     MlsMigrationConfig)
                                                                                                                                                                                                                                :> Put
                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                        MlsMigrationConfig))))))))))))))))
                                                                                                                                                                   :<|> ((Named
                                                                                                                                                                            '("get",
                                                                                                                                                                              EnforceFileDownloadLocationConfig)
                                                                                                                                                                            (From
                                                                                                                                                                               'V5
                                                                                                                                                                             :> (Description
                                                                                                                                                                                   "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                 :> (ZUser
                                                                                                                                                                                     :> (Summary
                                                                                                                                                                                           "Get config for enforceFileDownloadLocation"
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                                     :> ("teams"
                                                                                                                                                                                                         :> (Capture
                                                                                                                                                                                                               "tid"
                                                                                                                                                                                                               TeamId
                                                                                                                                                                                                             :> ("features"
                                                                                                                                                                                                                 :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                     :> Get
                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                                             EnforceFileDownloadLocationConfig))))))))))))
                                                                                                                                                                          :<|> Named
                                                                                                                                                                                 '("put",
                                                                                                                                                                                   EnforceFileDownloadLocationConfig)
                                                                                                                                                                                 (From
                                                                                                                                                                                    'V5
                                                                                                                                                                                  :> (Description
                                                                                                                                                                                        "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                      :> (ZUser
                                                                                                                                                                                          :> (Summary
                                                                                                                                                                                                "Put config for enforceFileDownloadLocation"
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                TeamFeatureError
                                                                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                                                                    '[]
                                                                                                                                                                                                                  :> ("teams"
                                                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                                                            "tid"
                                                                                                                                                                                                                            TeamId
                                                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                                                              :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                        (Feature
                                                                                                                                                                                                                                           EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                      :> Put
                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                                              EnforceFileDownloadLocationConfig))))))))))))))))
                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                 '("get",
                                                                                                                                                                                   LimitedEventFanoutConfig)
                                                                                                                                                                                 (From
                                                                                                                                                                                    'V5
                                                                                                                                                                                  :> (Description
                                                                                                                                                                                        ""
                                                                                                                                                                                      :> (ZUser
                                                                                                                                                                                          :> (Summary
                                                                                                                                                                                                "Get config for limitedEventFanout"
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                                      :> ("limitedEventFanout"
                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                  LimitedEventFanoutConfig))))))))))))
                                                                                                                                                                               :<|> (AllTeamFeaturesUserGet
                                                                                                                                                                                     :<|> (AllTeamFeaturesTeamGet
                                                                                                                                                                                           :<|> ((Named
                                                                                                                                                                                                    '("get-deprecated",
                                                                                                                                                                                                      SearchVisibilityAvailableConfig)
                                                                                                                                                                                                    (ZUser
                                                                                                                                                                                                     :> (Summary
                                                                                                                                                                                                           "[deprecated] Get config for searchVisibility"
                                                                                                                                                                                                         :> (Until
                                                                                                                                                                                                               'V2
                                                                                                                                                                                                             :> (Description
                                                                                                                                                                                                                   "Deprecated. Please use `GET /teams/:tid/features/searchVisibility` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                           OperationDenied
                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                                                       "tid"
                                                                                                                                                                                                                                       TeamId
                                                                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                                                                         :> ("search-visibility"
                                                                                                                                                                                                                                             :> Get
                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                                     SearchVisibilityAvailableConfig))))))))))))
                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                          '("put-deprecated",
                                                                                                                                                                                                            SearchVisibilityAvailableConfig)
                                                                                                                                                                                                          (ZUser
                                                                                                                                                                                                           :> (Summary
                                                                                                                                                                                                                 "[deprecated] Get config for searchVisibility"
                                                                                                                                                                                                               :> (Until
                                                                                                                                                                                                                     'V2
                                                                                                                                                                                                                   :> (Description
                                                                                                                                                                                                                         "Deprecated. Please use `PUT /teams/:tid/features/searchVisibility` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                 OperationDenied
                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                         TeamFeatureError
                                                                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                                                                 TeamId
                                                                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                                                                   :> ("search-visibility"
                                                                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                             (Feature
                                                                                                                                                                                                                                                                SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                                                           :> Put
                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                                                   SearchVisibilityAvailableConfig))))))))))))))
                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                '("get-deprecated",
                                                                                                                                                                                                                  ValidateSAMLEmailsConfig)
                                                                                                                                                                                                                (ZUser
                                                                                                                                                                                                                 :> (Summary
                                                                                                                                                                                                                       "[deprecated] Get config for validateSAMLemails"
                                                                                                                                                                                                                     :> (Until
                                                                                                                                                                                                                           'V2
                                                                                                                                                                                                                         :> (Description
                                                                                                                                                                                                                               "Deprecated. Please use `GET /teams/:tid/features/validateSAMLemails` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                                                                         :> ("teams"
                                                                                                                                                                                                                                             :> (Capture
                                                                                                                                                                                                                                                   "tid"
                                                                                                                                                                                                                                                   TeamId
                                                                                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                                                                                     :> ("validate-saml-emails"
                                                                                                                                                                                                                                                         :> Get
                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                                                 ValidateSAMLEmailsConfig))))))))))))
                                                                                                                                                                                                              :<|> Named
                                                                                                                                                                                                                     '("get-deprecated",
                                                                                                                                                                                                                       DigitalSignaturesConfig)
                                                                                                                                                                                                                     (ZUser
                                                                                                                                                                                                                      :> (Summary
                                                                                                                                                                                                                            "[deprecated] Get config for digitalSignatures"
                                                                                                                                                                                                                          :> (Until
                                                                                                                                                                                                                                'V2
                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                    "Deprecated. Please use `GET /teams/:tid/features/digitalSignatures` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                                                                        "tid"
                                                                                                                                                                                                                                                        TeamId
                                                                                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                                                                                          :> ("digital-signatures"
                                                                                                                                                                                                                                                              :> Get
                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                                                      DigitalSignaturesConfig)))))))))))))))
                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                         '("get-config",
                                                                                                                                                                                                           LegalholdConfig)
                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                            "[deprecated] Get feature config for feature legalhold"
                                                                                                                                                                                                          :> (Until
                                                                                                                                                                                                                'V2
                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                    "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                  :> (ZUser
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                                                  :> ("feature-configs"
                                                                                                                                                                                                                                      :> ("legalhold"
                                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                                  LegalholdConfig))))))))))
                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                               '("get-config",
                                                                                                                                                                                                                 SSOConfig)
                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                  "[deprecated] Get feature config for feature sso"
                                                                                                                                                                                                                :> (Until
                                                                                                                                                                                                                      'V2
                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                          "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                        :> (ZUser
                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                                                                        :> ("feature-configs"
                                                                                                                                                                                                                                            :> ("sso"
                                                                                                                                                                                                                                                :> Get
                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                                        SSOConfig))))))))))
                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                     '("get-config",
                                                                                                                                                                                                                       SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                        "[deprecated] Get feature config for feature searchVisibility"
                                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                          :> (Description
                                                                                                                                                                                                                                "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                              :> (ZUser
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                                                                                              :> ("feature-configs"
                                                                                                                                                                                                                                                  :> ("searchVisibility"
                                                                                                                                                                                                                                                      :> Get
                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                                                              SearchVisibilityAvailableConfig))))))))))
                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                           '("get-config",
                                                                                                                                                                                                                             ValidateSAMLEmailsConfig)
                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                              "[deprecated] Get feature config for feature validateSAMLemails"
                                                                                                                                                                                                                            :> (Until
                                                                                                                                                                                                                                  'V2
                                                                                                                                                                                                                                :> (Description
                                                                                                                                                                                                                                      "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                    :> (ZUser
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                                                                    :> ("feature-configs"
                                                                                                                                                                                                                                                        :> ("validateSAMLemails"
                                                                                                                                                                                                                                                            :> Get
                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                                                                    ValidateSAMLEmailsConfig))))))))))
                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                 '("get-config",
                                                                                                                                                                                                                                   DigitalSignaturesConfig)
                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                    "[deprecated] Get feature config for feature digitalSignatures"
                                                                                                                                                                                                                                  :> (Until
                                                                                                                                                                                                                                        'V2
                                                                                                                                                                                                                                      :> (Description
                                                                                                                                                                                                                                            "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                          :> (ZUser
                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                        OperationDenied
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                                                                                          :> ("feature-configs"
                                                                                                                                                                                                                                                              :> ("digitalSignatures"
                                                                                                                                                                                                                                                                  :> Get
                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                                                                          DigitalSignaturesConfig))))))))))
                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                       '("get-config",
                                                                                                                                                                                                                                         AppLockConfig)
                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                          "[deprecated] Get feature config for feature appLock"
                                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                                              'V2
                                                                                                                                                                                                                                            :> (Description
                                                                                                                                                                                                                                                  "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                :> (ZUser
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              OperationDenied
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                                                                                                :> ("feature-configs"
                                                                                                                                                                                                                                                                    :> ("appLock"
                                                                                                                                                                                                                                                                        :> Get
                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                                                                AppLockConfig))))))))))
                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                             '("get-config",
                                                                                                                                                                                                                                               FileSharingConfig)
                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                "[deprecated] Get feature config for feature fileSharing"
                                                                                                                                                                                                                                              :> (Until
                                                                                                                                                                                                                                                    'V2
                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                        "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                      :> (ZUser
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                                                                                      :> ("feature-configs"
                                                                                                                                                                                                                                                                          :> ("fileSharing"
                                                                                                                                                                                                                                                                              :> Get
                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                                                                      FileSharingConfig))))))))))
                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                   '("get-config",
                                                                                                                                                                                                                                                     ClassifiedDomainsConfig)
                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                      "[deprecated] Get feature config for feature classifiedDomains"
                                                                                                                                                                                                                                                    :> (Until
                                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                                        :> (Description
                                                                                                                                                                                                                                                              "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                            :> (ZUser
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          OperationDenied
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                                                                                                            :> ("feature-configs"
                                                                                                                                                                                                                                                                                :> ("classifiedDomains"
                                                                                                                                                                                                                                                                                    :> Get
                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                                                                                            ClassifiedDomainsConfig))))))))))
                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                         '("get-config",
                                                                                                                                                                                                                                                           ConferenceCallingConfig)
                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                            "[deprecated] Get feature config for feature conferenceCalling"
                                                                                                                                                                                                                                                          :> (Until
                                                                                                                                                                                                                                                                'V2
                                                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                                                    "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                  :> (ZUser
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                                                                                                  :> ("feature-configs"
                                                                                                                                                                                                                                                                                      :> ("conferenceCalling"
                                                                                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                                                                                  ConferenceCallingConfig))))))))))
                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                               '("get-config",
                                                                                                                                                                                                                                                                 SelfDeletingMessagesConfig)
                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                  "[deprecated] Get feature config for feature selfDeletingMessages"
                                                                                                                                                                                                                                                                :> (Until
                                                                                                                                                                                                                                                                      'V2
                                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                                          "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                        :> (ZUser
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                                                                                                                        :> ("feature-configs"
                                                                                                                                                                                                                                                                                            :> ("selfDeletingMessages"
                                                                                                                                                                                                                                                                                                :> Get
                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                                                                                        SelfDeletingMessagesConfig))))))))))
                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                     '("get-config",
                                                                                                                                                                                                                                                                       GuestLinksConfig)
                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                        "[deprecated] Get feature config for feature conversationGuestLinks"
                                                                                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                                                                          :> (Description
                                                                                                                                                                                                                                                                                "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                              :> (ZUser
                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                                                                                                                                              :> ("feature-configs"
                                                                                                                                                                                                                                                                                                  :> ("conversationGuestLinks"
                                                                                                                                                                                                                                                                                                      :> Get
                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                                                                                                              GuestLinksConfig))))))))))
                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                           '("get-config",
                                                                                                                                                                                                                                                                             SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                              "[deprecated] Get feature config for feature sndFactorPasswordChallenge"
                                                                                                                                                                                                                                                                            :> (Until
                                                                                                                                                                                                                                                                                  'V2
                                                                                                                                                                                                                                                                                :> (Description
                                                                                                                                                                                                                                                                                      "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                                    :> (ZUser
                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                                                                                                                    :> ("feature-configs"
                                                                                                                                                                                                                                                                                                        :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                                                                                                                            :> Get
                                                                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                                                                                                                    SndFactorPasswordChallengeConfig))))))))))
                                                                                                                                                                                                                                                                         :<|> Named
                                                                                                                                                                                                                                                                                '("get-config",
                                                                                                                                                                                                                                                                                  MLSConfig)
                                                                                                                                                                                                                                                                                (Summary
                                                                                                                                                                                                                                                                                   "[deprecated] Get feature config for feature mls"
                                                                                                                                                                                                                                                                                 :> (Until
                                                                                                                                                                                                                                                                                       'V2
                                                                                                                                                                                                                                                                                     :> (Description
                                                                                                                                                                                                                                                                                           "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                                         :> (ZUser
                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                                                                                                                                         :> ("feature-configs"
                                                                                                                                                                                                                                                                                                             :> ("mls"
                                                                                                                                                                                                                                                                                                                 :> Get
                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                                                                                                                         MLSConfig)))))))))))))))))))))))))))))))))))))))))))))))))
                                    :<|> ((Named
                                             "mls-message"
                                             ("mls"
                                              :> (Summary "Post an MLS message"
                                                  :> (From 'V5
                                                      :> (MakesFederatedCall
                                                            'Galley "on-mls-message-sent"
                                                          :> (MakesFederatedCall
                                                                'Galley "send-mls-message"
                                                              :> (MakesFederatedCall
                                                                    'Galley
                                                                    "on-conversation-updated"
                                                                  :> (MakesFederatedCall
                                                                        'Brig "get-mls-clients"
                                                                      :> (CanThrow 'ConvAccessDenied
                                                                          :> (CanThrow
                                                                                'ConvMemberNotFound
                                                                              :> (CanThrow
                                                                                    'ConvNotFound
                                                                                  :> (CanThrow
                                                                                        'LegalHoldNotEnabled
                                                                                      :> (CanThrow
                                                                                            'MissingLegalholdConsent
                                                                                          :> (CanThrow
                                                                                                'MLSClientMismatch
                                                                                              :> (CanThrow
                                                                                                    'MLSClientSenderUserMismatch
                                                                                                  :> (CanThrow
                                                                                                        'MLSCommitMissingReferences
                                                                                                      :> (CanThrow
                                                                                                            'MLSGroupConversationMismatch
                                                                                                          :> (CanThrow
                                                                                                                'MLSInvalidLeafNodeIndex
                                                                                                              :> (CanThrow
                                                                                                                    'MLSNotEnabled
                                                                                                                  :> (CanThrow
                                                                                                                        'MLSProposalNotFound
                                                                                                                      :> (CanThrow
                                                                                                                            'MLSProtocolErrorTag
                                                                                                                          :> (CanThrow
                                                                                                                                'MLSSelfRemovalNotAllowed
                                                                                                                              :> (CanThrow
                                                                                                                                    'MLSStaleMessage
                                                                                                                                  :> (CanThrow
                                                                                                                                        'MLSSubConvClientNotInParent
                                                                                                                                      :> (CanThrow
                                                                                                                                            'MLSUnsupportedMessage
                                                                                                                                          :> (CanThrow
                                                                                                                                                'MLSUnsupportedProposal
                                                                                                                                              :> (CanThrow
                                                                                                                                                    MLSProposalFailure
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        NonFederatingBackends
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            UnreachableBackends
                                                                                                                                                          :> ("messages"
                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                  :> (ZClient
                                                                                                                                                                      :> (ZConn
                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                '[MLS]
                                                                                                                                                                                (RawMLS
                                                                                                                                                                                   Message)
                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                   'POST
                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                   '[Respond
                                                                                                                                                                                       201
                                                                                                                                                                                       "Message sent"
                                                                                                                                                                                       MLSMessageSendingStatus]
                                                                                                                                                                                   MLSMessageSendingStatus)))))))))))))))))))))))))))))))))
                                           :<|> (Named
                                                   "mls-commit-bundle"
                                                   ("mls"
                                                    :> (Summary "Post a MLS CommitBundle"
                                                        :> (From 'V5
                                                            :> (MakesFederatedCall
                                                                  'Galley "on-mls-message-sent"
                                                                :> (MakesFederatedCall
                                                                      'Galley "mls-welcome"
                                                                    :> (MakesFederatedCall
                                                                          'Galley
                                                                          "send-mls-commit-bundle"
                                                                        :> (MakesFederatedCall
                                                                              'Galley
                                                                              "on-conversation-updated"
                                                                            :> (MakesFederatedCall
                                                                                  'Brig
                                                                                  "get-mls-clients"
                                                                                :> (MakesFederatedCall
                                                                                      'Brig
                                                                                      "get-users-by-ids"
                                                                                    :> (MakesFederatedCall
                                                                                          'Brig
                                                                                          "api-version"
                                                                                        :> (CanThrow
                                                                                              'ConvAccessDenied
                                                                                            :> (CanThrow
                                                                                                  'ConvMemberNotFound
                                                                                                :> (CanThrow
                                                                                                      'ConvNotFound
                                                                                                    :> (CanThrow
                                                                                                          'LegalHoldNotEnabled
                                                                                                        :> (CanThrow
                                                                                                              'MissingLegalholdConsent
                                                                                                            :> (CanThrow
                                                                                                                  'MLSClientMismatch
                                                                                                                :> (CanThrow
                                                                                                                      'MLSClientSenderUserMismatch
                                                                                                                    :> (CanThrow
                                                                                                                          'MLSCommitMissingReferences
                                                                                                                        :> (CanThrow
                                                                                                                              'MLSGroupConversationMismatch
                                                                                                                            :> (CanThrow
                                                                                                                                  'MLSInvalidLeafNodeIndex
                                                                                                                                :> (CanThrow
                                                                                                                                      'MLSNotEnabled
                                                                                                                                    :> (CanThrow
                                                                                                                                          'MLSProposalNotFound
                                                                                                                                        :> (CanThrow
                                                                                                                                              'MLSProtocolErrorTag
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'MLSSelfRemovalNotAllowed
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'MLSStaleMessage
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'MLSSubConvClientNotInParent
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'MLSUnsupportedMessage
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'MLSUnsupportedProposal
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'MLSWelcomeMismatch
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          'MLSLegalholdIncompatible
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              MLSProposalFailure
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  NonFederatingBackends
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      UnreachableBackends
                                                                                                                                                                                    :> ("commit-bundles"
                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                            :> (ZClient
                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                          '[MLS]
                                                                                                                                                                                                          (RawMLS
                                                                                                                                                                                                             CommitBundle)
                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                             'POST
                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                             '[Respond
                                                                                                                                                                                                                 201
                                                                                                                                                                                                                 "Commit accepted and forwarded"
                                                                                                                                                                                                                 MLSMessageSendingStatus]
                                                                                                                                                                                                             MLSMessageSendingStatus))))))))))))))))))))))))))))))))))))))
                                                 :<|> Named
                                                        "mls-public-keys"
                                                        ("mls"
                                                         :> (Summary
                                                               "Get public keys used by the backend to sign external proposals"
                                                             :> (Description
                                                                   "The format of the returned key is determined by the `format` query parameter:\n - raw (default): base64-encoded raw public keys\n - jwk: keys are nested objects in JWK format."
                                                                 :> (From 'V5
                                                                     :> (CanThrow 'MLSNotEnabled
                                                                         :> ("public-keys"
                                                                             :> (ZLocalUser
                                                                                 :> (QueryParam
                                                                                       "format"
                                                                                       MLSPublicKeyFormat
                                                                                     :> MultiVerb
                                                                                          'GET
                                                                                          '[JSON]
                                                                                          '[Respond
                                                                                              200
                                                                                              "Public keys"
                                                                                              (MLSKeysByPurpose
                                                                                                 (MLSKeys
                                                                                                    SomeKey))]
                                                                                          (MLSKeysByPurpose
                                                                                             (MLSKeys
                                                                                                SomeKey))))))))))))
                                          :<|> (CustomBackendAPI
                                                :<|> ((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"
                                                                      :> (MakesFederatedCall
                                                                            'Galley
                                                                            "on-conversation-updated"
                                                                          :> (MakesFederatedCall
                                                                                'Galley
                                                                                "on-mls-message-sent"
                                                                              :> (MakesFederatedCall
                                                                                    'Brig
                                                                                    "get-users-by-ids"
                                                                                  :> (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"
                                                                                  :> (MakesFederatedCall
                                                                                        'Galley
                                                                                        "on-conversation-updated"
                                                                                      :> (MakesFederatedCall
                                                                                            'Galley
                                                                                            "on-mls-message-sent"
                                                                                          :> (MakesFederatedCall
                                                                                                'Brig
                                                                                                "get-users-by-ids"
                                                                                              :> (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"
                                                                                        :> (MakesFederatedCall
                                                                                              'Galley
                                                                                              "on-conversation-updated"
                                                                                            :> (MakesFederatedCall
                                                                                                  'Galley
                                                                                                  "on-mls-message-sent"
                                                                                                :> (MakesFederatedCall
                                                                                                      'Brig
                                                                                                      "get-users-by-ids"
                                                                                                    :> (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"
                                                                                              :> (MakesFederatedCall
                                                                                                    'Galley
                                                                                                    "on-conversation-updated"
                                                                                                  :> (MakesFederatedCall
                                                                                                        'Galley
                                                                                                        "on-mls-message-sent"
                                                                                                      :> (MakesFederatedCall
                                                                                                            'Brig
                                                                                                            "get-users-by-ids"
                                                                                                          :> (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"
                                                                                                   :> (MakesFederatedCall
                                                                                                         'Galley
                                                                                                         "on-conversation-updated"
                                                                                                       :> (MakesFederatedCall
                                                                                                             'Galley
                                                                                                             "on-mls-message-sent"
                                                                                                           :> (MakesFederatedCall
                                                                                                                 'Brig
                                                                                                                 "get-users-by-ids"
                                                                                                               :> (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"]
                                                                                                                                                                                                    ())))))))))))))))))))))))))))))))
                                                      :<|> ((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)))))))))))))))
                                                            :<|> TeamNotificationAPI))))))))))
     '[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,
       Error InvalidInput, Error InternalError, Error FederationError,
       Async, Delay, Fail, Embed IO, Error JSONResponse, Resource,
       Final IO]
-> ServerT
     ((Named
         "get-unqualified-conversation"
         (Summary "Get a conversation by ID"
          :> (Until 'V3
              :> (CanThrow 'ConvNotFound
                  :> (CanThrow 'ConvAccessDenied
                      :> (ZLocalUser
                          :> ("conversations"
                              :> (Capture "cnv" ConvId
                                  :> MultiVerb
                                       'GET
                                       '[JSON]
                                       '[VersionedRespond 'V2 200 "Conversation" Conversation]
                                       Conversation)))))))
       :<|> (Named
               "get-unqualified-conversation-legalhold-alias"
               (Summary "Get a conversation by ID (Legalhold alias)"
                :> (Until 'V2
                    :> (CanThrow 'ConvNotFound
                        :> (CanThrow 'ConvAccessDenied
                            :> (ZLocalUser
                                :> ("legalhold"
                                    :> ("conversations"
                                        :> (Capture "cnv" ConvId
                                            :> MultiVerb
                                                 'GET
                                                 '[JSON]
                                                 '[VersionedRespond
                                                     'V2 200 "Conversation" Conversation]
                                                 Conversation))))))))
             :<|> (Named
                     "get-conversation@v2"
                     (Summary "Get a conversation by ID"
                      :> (Until 'V3
                          :> (MakesFederatedCall 'Galley "get-conversations"
                              :> (CanThrow 'ConvNotFound
                                  :> (CanThrow 'ConvAccessDenied
                                      :> (ZLocalUser
                                          :> ("conversations"
                                              :> (QualifiedCapture "cnv" ConvId
                                                  :> MultiVerb
                                                       'GET
                                                       '[JSON]
                                                       '[VersionedRespond
                                                           'V2 200 "Conversation" Conversation]
                                                       Conversation))))))))
                   :<|> (Named
                           "get-conversation@v5"
                           (Summary "Get a conversation by ID"
                            :> (From 'V3
                                :> (Until 'V6
                                    :> (MakesFederatedCall 'Galley "get-conversations"
                                        :> (CanThrow 'ConvNotFound
                                            :> (CanThrow 'ConvAccessDenied
                                                :> (ZLocalUser
                                                    :> ("conversations"
                                                        :> (QualifiedCapture "cnv" ConvId
                                                            :> MultiVerb
                                                                 'GET
                                                                 '[JSON]
                                                                 '[VersionedRespond
                                                                     'V5
                                                                     200
                                                                     "Conversation"
                                                                     Conversation]
                                                                 Conversation)))))))))
                         :<|> (Named
                                 "get-conversation"
                                 (Summary "Get a conversation by ID"
                                  :> (From 'V6
                                      :> (MakesFederatedCall 'Galley "get-conversations"
                                          :> (CanThrow 'ConvNotFound
                                              :> (CanThrow 'ConvAccessDenied
                                                  :> (ZLocalUser
                                                      :> ("conversations"
                                                          :> (QualifiedCapture "cnv" ConvId
                                                              :> Get '[JSON] Conversation))))))))
                               :<|> (Named
                                       "get-conversation-roles"
                                       (Summary
                                          "Get existing roles available for the given conversation"
                                        :> (CanThrow 'ConvNotFound
                                            :> (CanThrow 'ConvAccessDenied
                                                :> (ZLocalUser
                                                    :> ("conversations"
                                                        :> (Capture "cnv" ConvId
                                                            :> ("roles"
                                                                :> Get
                                                                     '[JSON]
                                                                     ConversationRolesList)))))))
                                     :<|> (Named
                                             "get-group-info"
                                             (Summary "Get MLS group information"
                                              :> (From 'V5
                                                  :> (MakesFederatedCall 'Galley "query-group-info"
                                                      :> (CanThrow 'ConvNotFound
                                                          :> (CanThrow 'MLSMissingGroupInfo
                                                              :> (CanThrow 'MLSNotEnabled
                                                                  :> (ZLocalUser
                                                                      :> ("conversations"
                                                                          :> (QualifiedCapture
                                                                                "cnv" ConvId
                                                                              :> ("groupinfo"
                                                                                  :> MultiVerb
                                                                                       'GET
                                                                                       '[MLS]
                                                                                       '[Respond
                                                                                           200
                                                                                           "The group information"
                                                                                           GroupInfoData]
                                                                                       GroupInfoData))))))))))
                                           :<|> (Named
                                                   "list-conversation-ids-unqualified"
                                                   (Summary
                                                      "[deprecated] Get all local conversation IDs."
                                                    :> (Until 'V3
                                                        :> (ZLocalUser
                                                            :> ("conversations"
                                                                :> ("ids"
                                                                    :> (QueryParam'
                                                                          '[Optional, Strict,
                                                                            Description
                                                                              "Conversation ID to start from (exclusive)"]
                                                                          "start"
                                                                          ConvId
                                                                        :> (QueryParam'
                                                                              '[Optional, Strict,
                                                                                Description
                                                                                  "Maximum number of IDs to return"]
                                                                              "size"
                                                                              (Range 1 1000 Int32)
                                                                            :> Get
                                                                                 '[JSON]
                                                                                 (ConversationList
                                                                                    ConvId))))))))
                                                 :<|> (Named
                                                         "list-conversation-ids-v2"
                                                         (Summary "Get all conversation IDs."
                                                          :> (Until 'V3
                                                              :> (Description PaginationDocs
                                                                  :> (ZLocalUser
                                                                      :> ("conversations"
                                                                          :> ("list-ids"
                                                                              :> (ReqBody
                                                                                    '[JSON]
                                                                                    GetPaginatedConversationIds
                                                                                  :> Post
                                                                                       '[JSON]
                                                                                       ConvIdsPage)))))))
                                                       :<|> (Named
                                                               "list-conversation-ids"
                                                               (Summary "Get all conversation IDs."
                                                                :> (From 'V3
                                                                    :> (Description PaginationDocs
                                                                        :> (ZLocalUser
                                                                            :> ("conversations"
                                                                                :> ("list-ids"
                                                                                    :> (ReqBody
                                                                                          '[JSON]
                                                                                          GetPaginatedConversationIds
                                                                                        :> Post
                                                                                             '[JSON]
                                                                                             ConvIdsPage)))))))
                                                             :<|> (Named
                                                                     "get-conversations"
                                                                     (Summary
                                                                        "Get all *local* conversations."
                                                                      :> (Until 'V3
                                                                          :> (Description
                                                                                "Will not return remote conversations.\n\nUse `POST /conversations/list-ids` followed by `POST /conversations/list` instead."
                                                                              :> (ZLocalUser
                                                                                  :> ("conversations"
                                                                                      :> (QueryParam'
                                                                                            '[Optional,
                                                                                              Strict,
                                                                                              Description
                                                                                                "Mutually exclusive with 'start' (at most 32 IDs per request)"]
                                                                                            "ids"
                                                                                            (Range
                                                                                               1
                                                                                               32
                                                                                               (CommaSeparatedList
                                                                                                  ConvId))
                                                                                          :> (QueryParam'
                                                                                                '[Optional,
                                                                                                  Strict,
                                                                                                  Description
                                                                                                    "Conversation ID to start from (exclusive)"]
                                                                                                "start"
                                                                                                ConvId
                                                                                              :> (QueryParam'
                                                                                                    '[Optional,
                                                                                                      Strict,
                                                                                                      Description
                                                                                                        "Maximum number of conversations to return"]
                                                                                                    "size"
                                                                                                    (Range
                                                                                                       1
                                                                                                       500
                                                                                                       Int32)
                                                                                                  :> MultiVerb
                                                                                                       'GET
                                                                                                       '[JSON]
                                                                                                       '[VersionedRespond
                                                                                                           'V2
                                                                                                           200
                                                                                                           "List of local conversations"
                                                                                                           (ConversationList
                                                                                                              Conversation)]
                                                                                                       (ConversationList
                                                                                                          Conversation)))))))))
                                                                   :<|> (Named
                                                                           "list-conversations@v1"
                                                                           (Summary
                                                                              "Get conversation metadata for a list of conversation ids"
                                                                            :> (MakesFederatedCall
                                                                                  'Galley
                                                                                  "get-conversations"
                                                                                :> (Until 'V2
                                                                                    :> (ZLocalUser
                                                                                        :> ("conversations"
                                                                                            :> ("list"
                                                                                                :> ("v2"
                                                                                                    :> (ReqBody
                                                                                                          '[JSON]
                                                                                                          ListConversations
                                                                                                        :> Post
                                                                                                             '[JSON]
                                                                                                             ConversationsResponse))))))))
                                                                         :<|> (Named
                                                                                 "list-conversations@v2"
                                                                                 (Summary
                                                                                    "Get conversation metadata for a list of conversation ids"
                                                                                  :> (MakesFederatedCall
                                                                                        'Galley
                                                                                        "get-conversations"
                                                                                      :> (From 'V2
                                                                                          :> (Until
                                                                                                'V3
                                                                                              :> (ZLocalUser
                                                                                                  :> ("conversations"
                                                                                                      :> ("list"
                                                                                                          :> (ReqBody
                                                                                                                '[JSON]
                                                                                                                ListConversations
                                                                                                              :> MultiVerb
                                                                                                                   'POST
                                                                                                                   '[JSON]
                                                                                                                   '[VersionedRespond
                                                                                                                       'V2
                                                                                                                       200
                                                                                                                       "Conversation page"
                                                                                                                       ConversationsResponse]
                                                                                                                   ConversationsResponse))))))))
                                                                               :<|> (Named
                                                                                       "list-conversations@v5"
                                                                                       (Summary
                                                                                          "Get conversation metadata for a list of conversation ids"
                                                                                        :> (MakesFederatedCall
                                                                                              'Galley
                                                                                              "get-conversations"
                                                                                            :> (From
                                                                                                  'V3
                                                                                                :> (Until
                                                                                                      'V6
                                                                                                    :> (ZLocalUser
                                                                                                        :> ("conversations"
                                                                                                            :> ("list"
                                                                                                                :> (ReqBody
                                                                                                                      '[JSON]
                                                                                                                      ListConversations
                                                                                                                    :> MultiVerb
                                                                                                                         'POST
                                                                                                                         '[JSON]
                                                                                                                         '[VersionedRespond
                                                                                                                             'V5
                                                                                                                             200
                                                                                                                             "Conversation page"
                                                                                                                             ConversationsResponse]
                                                                                                                         ConversationsResponse))))))))
                                                                                     :<|> (Named
                                                                                             "list-conversations"
                                                                                             (Summary
                                                                                                "Get conversation metadata for a list of conversation ids"
                                                                                              :> (MakesFederatedCall
                                                                                                    'Galley
                                                                                                    "get-conversations"
                                                                                                  :> (From
                                                                                                        'V6
                                                                                                      :> (ZLocalUser
                                                                                                          :> ("conversations"
                                                                                                              :> ("list"
                                                                                                                  :> (ReqBody
                                                                                                                        '[JSON]
                                                                                                                        ListConversations
                                                                                                                      :> Post
                                                                                                                           '[JSON]
                                                                                                                           ConversationsResponse)))))))
                                                                                           :<|> (Named
                                                                                                   "get-conversation-by-reusable-code"
                                                                                                   (Summary
                                                                                                      "Get limited conversation information by key/code pair"
                                                                                                    :> (CanThrow
                                                                                                          'CodeNotFound
                                                                                                        :> (CanThrow
                                                                                                              'InvalidConversationPassword
                                                                                                            :> (CanThrow
                                                                                                                  'ConvNotFound
                                                                                                                :> (CanThrow
                                                                                                                      'ConvAccessDenied
                                                                                                                    :> (CanThrow
                                                                                                                          'GuestLinksDisabled
                                                                                                                        :> (CanThrow
                                                                                                                              'NotATeamMember
                                                                                                                            :> (ZLocalUser
                                                                                                                                :> ("conversations"
                                                                                                                                    :> ("join"
                                                                                                                                        :> (QueryParam'
                                                                                                                                              '[Required,
                                                                                                                                                Strict]
                                                                                                                                              "key"
                                                                                                                                              Key
                                                                                                                                            :> (QueryParam'
                                                                                                                                                  '[Required,
                                                                                                                                                    Strict]
                                                                                                                                                  "code"
                                                                                                                                                  Value
                                                                                                                                                :> Get
                                                                                                                                                     '[JSON]
                                                                                                                                                     ConversationCoverView))))))))))))
                                                                                                 :<|> (Named
                                                                                                         "create-group-conversation@v2"
                                                                                                         (Summary
                                                                                                            "Create a new conversation"
                                                                                                          :> (DescriptionOAuthScope
                                                                                                                'WriteConversations
                                                                                                              :> (MakesFederatedCall
                                                                                                                    'Brig
                                                                                                                    "api-version"
                                                                                                                  :> (MakesFederatedCall
                                                                                                                        'Galley
                                                                                                                        "on-conversation-created"
                                                                                                                      :> (MakesFederatedCall
                                                                                                                            'Galley
                                                                                                                            "on-conversation-updated"
                                                                                                                          :> (Until
                                                                                                                                'V3
                                                                                                                              :> (CanThrow
                                                                                                                                    'ConvAccessDenied
                                                                                                                                  :> (CanThrow
                                                                                                                                        'MLSNonEmptyMemberList
                                                                                                                                      :> (CanThrow
                                                                                                                                            'MLSNotEnabled
                                                                                                                                          :> (CanThrow
                                                                                                                                                'NotConnected
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'NotATeamMember
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        OperationDenied
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'MissingLegalholdConsent
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                UnreachableBackendsLegacy
                                                                                                                                                              :> (Description
                                                                                                                                                                    "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                      :> (ZOptConn
                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                              :> (VersionedReqBody
                                                                                                                                                                                    'V2
                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                    NewConv
                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                       'POST
                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                       '[WithHeaders
                                                                                                                                                                                           ConversationHeaders
                                                                                                                                                                                           Conversation
                                                                                                                                                                                           (VersionedRespond
                                                                                                                                                                                              'V2
                                                                                                                                                                                              200
                                                                                                                                                                                              "Conversation existed"
                                                                                                                                                                                              Conversation),
                                                                                                                                                                                         WithHeaders
                                                                                                                                                                                           ConversationHeaders
                                                                                                                                                                                           Conversation
                                                                                                                                                                                           (VersionedRespond
                                                                                                                                                                                              'V2
                                                                                                                                                                                              201
                                                                                                                                                                                              "Conversation created"
                                                                                                                                                                                              Conversation)]
                                                                                                                                                                                       (ResponseForExistedCreated
                                                                                                                                                                                          Conversation))))))))))))))))))))
                                                                                                       :<|> (Named
                                                                                                               "create-group-conversation@v3"
                                                                                                               (Summary
                                                                                                                  "Create a new conversation"
                                                                                                                :> (DescriptionOAuthScope
                                                                                                                      'WriteConversations
                                                                                                                    :> (MakesFederatedCall
                                                                                                                          'Brig
                                                                                                                          "api-version"
                                                                                                                        :> (MakesFederatedCall
                                                                                                                              'Galley
                                                                                                                              "on-conversation-created"
                                                                                                                            :> (MakesFederatedCall
                                                                                                                                  'Galley
                                                                                                                                  "on-conversation-updated"
                                                                                                                                :> (From
                                                                                                                                      'V3
                                                                                                                                    :> (Until
                                                                                                                                          'V4
                                                                                                                                        :> (CanThrow
                                                                                                                                              'ConvAccessDenied
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'MLSNonEmptyMemberList
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'MLSNotEnabled
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'NotConnected
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'NotATeamMember
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  OperationDenied
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'MissingLegalholdConsent
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          UnreachableBackendsLegacy
                                                                                                                                                                        :> (Description
                                                                                                                                                                              "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                :> (ZOptConn
                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                              NewConv
                                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                                 'POST
                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                 '[WithHeaders
                                                                                                                                                                                                     ConversationHeaders
                                                                                                                                                                                                     Conversation
                                                                                                                                                                                                     (VersionedRespond
                                                                                                                                                                                                        'V3
                                                                                                                                                                                                        200
                                                                                                                                                                                                        "Conversation existed"
                                                                                                                                                                                                        Conversation),
                                                                                                                                                                                                   WithHeaders
                                                                                                                                                                                                     ConversationHeaders
                                                                                                                                                                                                     Conversation
                                                                                                                                                                                                     (VersionedRespond
                                                                                                                                                                                                        'V3
                                                                                                                                                                                                        201
                                                                                                                                                                                                        "Conversation created"
                                                                                                                                                                                                        Conversation)]
                                                                                                                                                                                                 (ResponseForExistedCreated
                                                                                                                                                                                                    Conversation)))))))))))))))))))))
                                                                                                             :<|> (Named
                                                                                                                     "create-group-conversation@v5"
                                                                                                                     (Summary
                                                                                                                        "Create a new conversation"
                                                                                                                      :> (MakesFederatedCall
                                                                                                                            'Brig
                                                                                                                            "api-version"
                                                                                                                          :> (MakesFederatedCall
                                                                                                                                'Brig
                                                                                                                                "get-not-fully-connected-backends"
                                                                                                                              :> (MakesFederatedCall
                                                                                                                                    'Galley
                                                                                                                                    "on-conversation-created"
                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                        'Galley
                                                                                                                                        "on-conversation-updated"
                                                                                                                                      :> (From
                                                                                                                                            'V4
                                                                                                                                          :> (Until
                                                                                                                                                'V6
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'ConvAccessDenied
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'MLSNonEmptyMemberList
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'MLSNotEnabled
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'NotConnected
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        OperationDenied
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'MissingLegalholdConsent
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                NonFederatingBackends
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    UnreachableBackends
                                                                                                                                                                                  :> (Description
                                                                                                                                                                                        "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                          :> (ZOptConn
                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                        NewConv
                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                           'POST
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           '[WithHeaders
                                                                                                                                                                                                               ConversationHeaders
                                                                                                                                                                                                               Conversation
                                                                                                                                                                                                               (VersionedRespond
                                                                                                                                                                                                                  'V5
                                                                                                                                                                                                                  200
                                                                                                                                                                                                                  "Conversation existed"
                                                                                                                                                                                                                  Conversation),
                                                                                                                                                                                                             WithHeaders
                                                                                                                                                                                                               ConversationHeaders
                                                                                                                                                                                                               CreateGroupConversation
                                                                                                                                                                                                               (VersionedRespond
                                                                                                                                                                                                                  'V5
                                                                                                                                                                                                                  201
                                                                                                                                                                                                                  "Conversation created"
                                                                                                                                                                                                                  CreateGroupConversation)]
                                                                                                                                                                                                           CreateGroupConversationResponse)))))))))))))))))))))
                                                                                                                   :<|> (Named
                                                                                                                           "create-group-conversation"
                                                                                                                           (Summary
                                                                                                                              "Create a new conversation"
                                                                                                                            :> (MakesFederatedCall
                                                                                                                                  'Brig
                                                                                                                                  "api-version"
                                                                                                                                :> (MakesFederatedCall
                                                                                                                                      'Brig
                                                                                                                                      "get-not-fully-connected-backends"
                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                          'Galley
                                                                                                                                          "on-conversation-created"
                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                              'Galley
                                                                                                                                              "on-conversation-updated"
                                                                                                                                            :> (From
                                                                                                                                                  'V6
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'ConvAccessDenied
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'MLSNonEmptyMemberList
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'MLSNotEnabled
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'NotConnected
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          OperationDenied
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'MissingLegalholdConsent
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  NonFederatingBackends
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      UnreachableBackends
                                                                                                                                                                                    :> (Description
                                                                                                                                                                                          "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                            :> (ZOptConn
                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                          NewConv
                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                             'POST
                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                             '[WithHeaders
                                                                                                                                                                                                                 ConversationHeaders
                                                                                                                                                                                                                 Conversation
                                                                                                                                                                                                                 (VersionedRespond
                                                                                                                                                                                                                    'V6
                                                                                                                                                                                                                    200
                                                                                                                                                                                                                    "Conversation existed"
                                                                                                                                                                                                                    Conversation),
                                                                                                                                                                                                               WithHeaders
                                                                                                                                                                                                                 ConversationHeaders
                                                                                                                                                                                                                 CreateGroupConversation
                                                                                                                                                                                                                 (VersionedRespond
                                                                                                                                                                                                                    'V6
                                                                                                                                                                                                                    201
                                                                                                                                                                                                                    "Conversation created"
                                                                                                                                                                                                                    CreateGroupConversation)]
                                                                                                                                                                                                             CreateGroupConversationResponse))))))))))))))))))))
                                                                                                                         :<|> (Named
                                                                                                                                 "create-self-conversation@v2"
                                                                                                                                 (Summary
                                                                                                                                    "Create a self-conversation"
                                                                                                                                  :> (Until
                                                                                                                                        'V3
                                                                                                                                      :> (ZLocalUser
                                                                                                                                          :> ("conversations"
                                                                                                                                              :> ("self"
                                                                                                                                                  :> MultiVerb
                                                                                                                                                       'POST
                                                                                                                                                       '[JSON]
                                                                                                                                                       '[WithHeaders
                                                                                                                                                           ConversationHeaders
                                                                                                                                                           Conversation
                                                                                                                                                           (VersionedRespond
                                                                                                                                                              'V2
                                                                                                                                                              200
                                                                                                                                                              "Conversation existed"
                                                                                                                                                              Conversation),
                                                                                                                                                         WithHeaders
                                                                                                                                                           ConversationHeaders
                                                                                                                                                           Conversation
                                                                                                                                                           (VersionedRespond
                                                                                                                                                              'V2
                                                                                                                                                              201
                                                                                                                                                              "Conversation created"
                                                                                                                                                              Conversation)]
                                                                                                                                                       (ResponseForExistedCreated
                                                                                                                                                          Conversation))))))
                                                                                                                               :<|> (Named
                                                                                                                                       "create-self-conversation@v5"
                                                                                                                                       (Summary
                                                                                                                                          "Create a self-conversation"
                                                                                                                                        :> (From
                                                                                                                                              'V3
                                                                                                                                            :> (Until
                                                                                                                                                  'V6
                                                                                                                                                :> (ZLocalUser
                                                                                                                                                    :> ("conversations"
                                                                                                                                                        :> ("self"
                                                                                                                                                            :> MultiVerb
                                                                                                                                                                 'POST
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 '[WithHeaders
                                                                                                                                                                     ConversationHeaders
                                                                                                                                                                     Conversation
                                                                                                                                                                     (VersionedRespond
                                                                                                                                                                        'V5
                                                                                                                                                                        200
                                                                                                                                                                        "Conversation existed"
                                                                                                                                                                        Conversation),
                                                                                                                                                                   WithHeaders
                                                                                                                                                                     ConversationHeaders
                                                                                                                                                                     Conversation
                                                                                                                                                                     (VersionedRespond
                                                                                                                                                                        'V5
                                                                                                                                                                        201
                                                                                                                                                                        "Conversation created"
                                                                                                                                                                        Conversation)]
                                                                                                                                                                 (ResponseForExistedCreated
                                                                                                                                                                    Conversation)))))))
                                                                                                                                     :<|> (Named
                                                                                                                                             "create-self-conversation"
                                                                                                                                             (Summary
                                                                                                                                                "Create a self-conversation"
                                                                                                                                              :> (From
                                                                                                                                                    'V6
                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                      :> ("conversations"
                                                                                                                                                          :> ("self"
                                                                                                                                                              :> MultiVerb
                                                                                                                                                                   'POST
                                                                                                                                                                   '[JSON]
                                                                                                                                                                   '[WithHeaders
                                                                                                                                                                       ConversationHeaders
                                                                                                                                                                       Conversation
                                                                                                                                                                       (VersionedRespond
                                                                                                                                                                          'V6
                                                                                                                                                                          200
                                                                                                                                                                          "Conversation existed"
                                                                                                                                                                          Conversation),
                                                                                                                                                                     WithHeaders
                                                                                                                                                                       ConversationHeaders
                                                                                                                                                                       Conversation
                                                                                                                                                                       (VersionedRespond
                                                                                                                                                                          'V6
                                                                                                                                                                          201
                                                                                                                                                                          "Conversation created"
                                                                                                                                                                          Conversation)]
                                                                                                                                                                   (ResponseForExistedCreated
                                                                                                                                                                      Conversation))))))
                                                                                                                                           :<|> (Named
                                                                                                                                                   "get-mls-self-conversation@v5"
                                                                                                                                                   (Summary
                                                                                                                                                      "Get the user's MLS self-conversation"
                                                                                                                                                    :> (From
                                                                                                                                                          'V5
                                                                                                                                                        :> (Until
                                                                                                                                                              'V6
                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                :> ("conversations"
                                                                                                                                                                    :> ("mls-self"
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'MLSNotEnabled
                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                 'GET
                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                 '[VersionedRespond
                                                                                                                                                                                     'V5
                                                                                                                                                                                     200
                                                                                                                                                                                     "The MLS self-conversation"
                                                                                                                                                                                     Conversation]
                                                                                                                                                                                 Conversation)))))))
                                                                                                                                                 :<|> (Named
                                                                                                                                                         "get-mls-self-conversation"
                                                                                                                                                         (Summary
                                                                                                                                                            "Get the user's MLS self-conversation"
                                                                                                                                                          :> (From
                                                                                                                                                                'V6
                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                      :> ("mls-self"
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                'MLSNotEnabled
                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                   'GET
                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                   '[Respond
                                                                                                                                                                                       200
                                                                                                                                                                                       "The MLS self-conversation"
                                                                                                                                                                                       Conversation]
                                                                                                                                                                                   Conversation))))))
                                                                                                                                                       :<|> (Named
                                                                                                                                                               "get-subconversation"
                                                                                                                                                               (Summary
                                                                                                                                                                  "Get information about an MLS subconversation"
                                                                                                                                                                :> (From
                                                                                                                                                                      'V5
                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                          'Galley
                                                                                                                                                                          "get-sub-conversation"
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      'MLSSubConvUnsupportedConvType
                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                            :> (QualifiedCapture
                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                :> ("subconversations"
                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                          "subconv"
                                                                                                                                                                                                          SubConvId
                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                             'GET
                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                             '[Respond
                                                                                                                                                                                                                 200
                                                                                                                                                                                                                 "Subconversation"
                                                                                                                                                                                                                 PublicSubConversation]
                                                                                                                                                                                                             PublicSubConversation)))))))))))
                                                                                                                                                             :<|> (Named
                                                                                                                                                                     "leave-subconversation"
                                                                                                                                                                     (Summary
                                                                                                                                                                        "Leave an MLS subconversation"
                                                                                                                                                                      :> (From
                                                                                                                                                                            'V5
                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                'Galley
                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                    'Galley
                                                                                                                                                                                    "leave-sub-conversation"
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            'ConvAccessDenied
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'MLSProtocolErrorTag
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'MLSStaleMessage
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'MLSNotEnabled
                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                          :> (ZClient
                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                  :> (QualifiedCapture
                                                                                                                                                                                                                        "cnv"
                                                                                                                                                                                                                        ConvId
                                                                                                                                                                                                                      :> ("subconversations"
                                                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                                                "subconv"
                                                                                                                                                                                                                                SubConvId
                                                                                                                                                                                                                              :> ("self"
                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                       'DELETE
                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                       '[RespondEmpty
                                                                                                                                                                                                                                           200
                                                                                                                                                                                                                                           "OK"]
                                                                                                                                                                                                                                       ()))))))))))))))))
                                                                                                                                                                   :<|> (Named
                                                                                                                                                                           "delete-subconversation"
                                                                                                                                                                           (Summary
                                                                                                                                                                              "Delete an MLS subconversation"
                                                                                                                                                                            :> (From
                                                                                                                                                                                  'V5
                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                      'Galley
                                                                                                                                                                                      "delete-sub-conversation"
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'MLSNotEnabled
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'MLSStaleMessage
                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                            :> (QualifiedCapture
                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                :> ("subconversations"
                                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                                          "subconv"
                                                                                                                                                                                                                          SubConvId
                                                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                              DeleteSubConversationRequest
                                                                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                                                                 'DELETE
                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                 '[Respond
                                                                                                                                                                                                                                     200
                                                                                                                                                                                                                                     "Deletion successful"
                                                                                                                                                                                                                                     ()]
                                                                                                                                                                                                                                 ())))))))))))))
                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                 "get-subconversation-group-info"
                                                                                                                                                                                 (Summary
                                                                                                                                                                                    "Get MLS group information of subconversation"
                                                                                                                                                                                  :> (From
                                                                                                                                                                                        'V5
                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                            'Galley
                                                                                                                                                                                            "query-group-info"
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'MLSMissingGroupInfo
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'MLSNotEnabled
                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                              :> (QualifiedCapture
                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                  :> ("subconversations"
                                                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                                                            "subconv"
                                                                                                                                                                                                                            SubConvId
                                                                                                                                                                                                                          :> ("groupinfo"
                                                                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                                                                   'GET
                                                                                                                                                                                                                                   '[MLS]
                                                                                                                                                                                                                                   '[Respond
                                                                                                                                                                                                                                       200
                                                                                                                                                                                                                                       "The group information"
                                                                                                                                                                                                                                       GroupInfoData]
                                                                                                                                                                                                                                   GroupInfoData))))))))))))
                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                       "create-one-to-one-conversation@v2"
                                                                                                                                                                                       (Summary
                                                                                                                                                                                          "Create a 1:1 conversation"
                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                              'Brig
                                                                                                                                                                                              "api-version"
                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                  "on-conversation-created"
                                                                                                                                                                                                :> (Until
                                                                                                                                                                                                      'V3
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          'ConvAccessDenied
                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                  'NoBindingTeamMembers
                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                      'NonBindingTeam
                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              'NotConnected
                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                          'MissingLegalholdConsent
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              UnreachableBackendsLegacy
                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                        :> ("one2one"
                                                                                                                                                                                                                                                            :> (VersionedReqBody
                                                                                                                                                                                                                                                                  'V2
                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                  NewConv
                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                     '[WithHeaders
                                                                                                                                                                                                                                                                         ConversationHeaders
                                                                                                                                                                                                                                                                         Conversation
                                                                                                                                                                                                                                                                         (VersionedRespond
                                                                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                                                                            200
                                                                                                                                                                                                                                                                            "Conversation existed"
                                                                                                                                                                                                                                                                            Conversation),
                                                                                                                                                                                                                                                                       WithHeaders
                                                                                                                                                                                                                                                                         ConversationHeaders
                                                                                                                                                                                                                                                                         Conversation
                                                                                                                                                                                                                                                                         (VersionedRespond
                                                                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                                                                            201
                                                                                                                                                                                                                                                                            "Conversation created"
                                                                                                                                                                                                                                                                            Conversation)]
                                                                                                                                                                                                                                                                     (ResponseForExistedCreated
                                                                                                                                                                                                                                                                        Conversation))))))))))))))))))))
                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                             "create-one-to-one-conversation"
                                                                                                                                                                                             (Summary
                                                                                                                                                                                                "Create a 1:1 conversation"
                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                    "on-conversation-created"
                                                                                                                                                                                                  :> (From
                                                                                                                                                                                                        'V3
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            'ConvAccessDenied
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                    'NoBindingTeamMembers
                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                        'NonBindingTeam
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                'NotConnected
                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            'MissingLegalholdConsent
                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                UnreachableBackendsLegacy
                                                                                                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                                                                                                  :> (ZConn
                                                                                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                                                                                          :> ("one2one"
                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                    NewConv
                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                       'POST
                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                       '[WithHeaders
                                                                                                                                                                                                                                                                           ConversationHeaders
                                                                                                                                                                                                                                                                           Conversation
                                                                                                                                                                                                                                                                           (VersionedRespond
                                                                                                                                                                                                                                                                              'V3
                                                                                                                                                                                                                                                                              200
                                                                                                                                                                                                                                                                              "Conversation existed"
                                                                                                                                                                                                                                                                              Conversation),
                                                                                                                                                                                                                                                                         WithHeaders
                                                                                                                                                                                                                                                                           ConversationHeaders
                                                                                                                                                                                                                                                                           Conversation
                                                                                                                                                                                                                                                                           (VersionedRespond
                                                                                                                                                                                                                                                                              'V3
                                                                                                                                                                                                                                                                              201
                                                                                                                                                                                                                                                                              "Conversation created"
                                                                                                                                                                                                                                                                              Conversation)]
                                                                                                                                                                                                                                                                       (ResponseForExistedCreated
                                                                                                                                                                                                                                                                          Conversation)))))))))))))))))))
                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                   "get-one-to-one-mls-conversation@v5"
                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                      "Get an MLS 1:1 conversation"
                                                                                                                                                                                                    :> (From
                                                                                                                                                                                                          'V5
                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                              'V6
                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                      'MLSNotEnabled
                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                          'NotConnected
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              'MLSFederatedOne2OneNotSupported
                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                :> ("one2one"
                                                                                                                                                                                                                                    :> (QualifiedCapture
                                                                                                                                                                                                                                          "usr"
                                                                                                                                                                                                                                          UserId
                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                             'GET
                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                             '[VersionedRespond
                                                                                                                                                                                                                                                 'V5
                                                                                                                                                                                                                                                 200
                                                                                                                                                                                                                                                 "MLS 1-1 conversation"
                                                                                                                                                                                                                                                 Conversation]
                                                                                                                                                                                                                                             Conversation))))))))))
                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                         "get-one-to-one-mls-conversation@v6"
                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                            "Get an MLS 1:1 conversation"
                                                                                                                                                                                                          :> (From
                                                                                                                                                                                                                'V6
                                                                                                                                                                                                              :> (Until
                                                                                                                                                                                                                    'V7
                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            'MLSNotEnabled
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                'NotConnected
                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                  :> ("one2one"
                                                                                                                                                                                                                                      :> (QualifiedCapture
                                                                                                                                                                                                                                            "usr"
                                                                                                                                                                                                                                            UserId
                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                               'GET
                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                               '[Respond
                                                                                                                                                                                                                                                   200
                                                                                                                                                                                                                                                   "MLS 1-1 conversation"
                                                                                                                                                                                                                                                   (MLSOne2OneConversation
                                                                                                                                                                                                                                                      MLSPublicKey)]
                                                                                                                                                                                                                                               (MLSOne2OneConversation
                                                                                                                                                                                                                                                  MLSPublicKey))))))))))
                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                               "get-one-to-one-mls-conversation"
                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                  "Get an MLS 1:1 conversation"
                                                                                                                                                                                                                :> (From
                                                                                                                                                                                                                      'V7
                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              'MLSNotEnabled
                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                  'NotConnected
                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                    :> ("one2one"
                                                                                                                                                                                                                                        :> (QualifiedCapture
                                                                                                                                                                                                                                              "usr"
                                                                                                                                                                                                                                              UserId
                                                                                                                                                                                                                                            :> (QueryParam
                                                                                                                                                                                                                                                  "format"
                                                                                                                                                                                                                                                  MLSPublicKeyFormat
                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                     'GET
                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                     '[Respond
                                                                                                                                                                                                                                                         200
                                                                                                                                                                                                                                                         "MLS 1-1 conversation"
                                                                                                                                                                                                                                                         (MLSOne2OneConversation
                                                                                                                                                                                                                                                            SomeKey)]
                                                                                                                                                                                                                                                     (MLSOne2OneConversation
                                                                                                                                                                                                                                                        SomeKey))))))))))
                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                     "add-members-to-conversation-unqualified"
                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                        "Add members to an existing conversation (deprecated)"
                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                            "on-conversation-updated"
                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                                                                              :> (Until
                                                                                                                                                                                                                                    'V2
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                           'AddConversationMember)
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                               'LeaveConversation)
                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                    'InvalidOperation
                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                        'TooManyMembers
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'ConvAccessDenied
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'NotConnected
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        'MissingLegalholdConsent
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            NonFederatingBackends
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                UnreachableBackends
                                                                                                                                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                                                                                                                                  :> (ZConn
                                                                                                                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                                                                                                                "cnv"
                                                                                                                                                                                                                                                                                                ConvId
                                                                                                                                                                                                                                                                                              :> ("members"
                                                                                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                        Invite
                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                           'POST
                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                           ConvUpdateResponses
                                                                                                                                                                                                                                                                                                           (UpdateResult
                                                                                                                                                                                                                                                                                                              Event))))))))))))))))))))))
                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                           "add-members-to-conversation-unqualified2"
                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                              "Add qualified members to an existing conversation."
                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                  "on-conversation-updated"
                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                      "on-mls-message-sent"
                                                                                                                                                                                                                                    :> (Until
                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                 'AddConversationMember)
                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                  ('ActionDenied
                                                                                                                                                                                                                                                     'LeaveConversation)
                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'InvalidOperation
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'TooManyMembers
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          'NotConnected
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'MissingLegalholdConsent
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  NonFederatingBackends
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      UnreachableBackends
                                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                                        :> (ZConn
                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                                    :> ("members"
                                                                                                                                                                                                                                                                                                        :> ("v2"
                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                  InviteQualified
                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                     ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                     (UpdateResult
                                                                                                                                                                                                                                                                                                                        Event)))))))))))))))))))))))
                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                 "add-members-to-conversation"
                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                    "Add qualified members to an existing conversation."
                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                        "on-conversation-updated"
                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                            "on-mls-message-sent"
                                                                                                                                                                                                                                          :> (From
                                                                                                                                                                                                                                                'V2
                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                    ('ActionDenied
                                                                                                                                                                                                                                                       'AddConversationMember)
                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                                           'LeaveConversation)
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'TooManyMembers
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        'ConvAccessDenied
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'NotConnected
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    'MissingLegalholdConsent
                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                        NonFederatingBackends
                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                            UnreachableBackends
                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                      :> (QualifiedCapture
                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                          :> ("members"
                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                    InviteQualified
                                                                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                                                                       'POST
                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                       ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                       (UpdateResult
                                                                                                                                                                                                                                                                                                                          Event))))))))))))))))))))))
                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                       "join-conversation-by-id-unqualified"
                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                          "Join a conversation by its ID (if link access enabled) (deprecated)"
                                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                                              'V5
                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                  "on-conversation-updated"
                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                      'ConvAccessDenied
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'TooManyMembers
                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                        :> (ZConn
                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                :> (Capture'
                                                                                                                                                                                                                                                                                      '[Description
                                                                                                                                                                                                                                                                                          "Conversation ID"]
                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                    :> ("join"
                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                             'POST
                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                             ConvJoinResponses
                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                Event))))))))))))))
                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                             "join-conversation-by-code-unqualified"
                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                "Join a conversation using a reusable code"
                                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                                    "If the guest links team feature is disabled, this will fail with 409 GuestLinksDisabled.Note that this is currently inconsistent (for backwards compatibility reasons) with `POST /conversations/code-check` which responds with 404 CodeNotFound if guest links are disabled."
                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                        "on-conversation-updated"
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'CodeNotFound
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'InvalidConversationPassword
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    'ConvAccessDenied
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'GuestLinksDisabled
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                        'TooManyMembers
                                                                                                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                                                                                                          :> (ZConn
                                                                                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                                                                                  :> ("join"
                                                                                                                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                            JoinConversationByCode
                                                                                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                                                                                               'POST
                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                               ConvJoinResponses
                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                  Event)))))))))))))))))
                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                   "code-check"
                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                      "Check validity of a conversation code."
                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                          "If the guest links team feature is disabled, this will fail with 404 CodeNotFound.Note that this is currently inconsistent (for backwards compatibility reasons) with `POST /conversations/join` which responds with 409 GuestLinksDisabled if guest links are disabled."
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              'CodeNotFound
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'ConvNotFound
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'InvalidConversationPassword
                                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                                        :> ("code-check"
                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                  ConversationCode
                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                     '[RespondEmpty
                                                                                                                                                                                                                                                                                         200
                                                                                                                                                                                                                                                                                         "Valid"]
                                                                                                                                                                                                                                                                                     ()))))))))
                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                         "create-conversation-code-unqualified@v3"
                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                            "Create or recreate a conversation code"
                                                                                                                                                                                                                                                          :> (Until
                                                                                                                                                                                                                                                                'V4
                                                                                                                                                                                                                                                              :> (DescriptionOAuthScope
                                                                                                                                                                                                                                                                    'WriteConversationsCode
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        'ConvAccessDenied
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'GuestLinksDisabled
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    'CreateConversationCodeConflict
                                                                                                                                                                                                                                                                                  :> (ZUser
                                                                                                                                                                                                                                                                                      :> (ZHostOpt
                                                                                                                                                                                                                                                                                          :> (ZOptConn
                                                                                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                                                                                  :> (Capture'
                                                                                                                                                                                                                                                                                                        '[Description
                                                                                                                                                                                                                                                                                                            "Conversation ID"]
                                                                                                                                                                                                                                                                                                        "cnv"
                                                                                                                                                                                                                                                                                                        ConvId
                                                                                                                                                                                                                                                                                                      :> ("code"
                                                                                                                                                                                                                                                                                                          :> CreateConversationCodeVerb)))))))))))))
                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                               "create-conversation-code-unqualified"
                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                  "Create or recreate a conversation code"
                                                                                                                                                                                                                                                                :> (From
                                                                                                                                                                                                                                                                      'V4
                                                                                                                                                                                                                                                                    :> (DescriptionOAuthScope
                                                                                                                                                                                                                                                                          'WriteConversationsCode
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'ConvAccessDenied
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'ConvNotFound
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      'GuestLinksDisabled
                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                          'CreateConversationCodeConflict
                                                                                                                                                                                                                                                                                        :> (ZUser
                                                                                                                                                                                                                                                                                            :> (ZHostOpt
                                                                                                                                                                                                                                                                                                :> (ZOptConn
                                                                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                                                                        :> (Capture'
                                                                                                                                                                                                                                                                                                              '[Description
                                                                                                                                                                                                                                                                                                                  "Conversation ID"]
                                                                                                                                                                                                                                                                                                              "cnv"
                                                                                                                                                                                                                                                                                                              ConvId
                                                                                                                                                                                                                                                                                                            :> ("code"
                                                                                                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                      CreateConversationCodeRequest
                                                                                                                                                                                                                                                                                                                    :> CreateConversationCodeVerb))))))))))))))
                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                     "get-conversation-guest-links-status"
                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                        "Get the status of the guest links feature for a conversation that potentially has been created by someone from another team."
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'ConvAccessDenied
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                                                              :> (ZUser
                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                      :> (Capture'
                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                                                                                                                              :> ("conversationGuestLinks"
                                                                                                                                                                                                                                                                                                  :> Get
                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                                                                                                          GuestLinksConfig)))))))))
                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                           "remove-code-unqualified"
                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                              "Delete conversation code"
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                                        :> (ZConn
                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                :> (Capture'
                                                                                                                                                                                                                                                                                                      '[Description
                                                                                                                                                                                                                                                                                                          "Conversation ID"]
                                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                                    :> ("code"
                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                             'DELETE
                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                             '[Respond
                                                                                                                                                                                                                                                                                                                 200
                                                                                                                                                                                                                                                                                                                 "Conversation code deleted."
                                                                                                                                                                                                                                                                                                                 Event]
                                                                                                                                                                                                                                                                                                             Event))))))))
                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                 "get-code"
                                                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                                                    "Get existing conversation code"
                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                        'CodeNotFound
                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                            'ConvAccessDenied
                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                    'GuestLinksDisabled
                                                                                                                                                                                                                                                                                                  :> (ZHostOpt
                                                                                                                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                  :> ("code"
                                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                                           'GET
                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                           '[Respond
                                                                                                                                                                                                                                                                                                                               200
                                                                                                                                                                                                                                                                                                                               "Conversation Code"
                                                                                                                                                                                                                                                                                                                               ConversationCodeInfo]
                                                                                                                                                                                                                                                                                                                           ConversationCodeInfo))))))))))
                                                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                                                       "member-typing-unqualified"
                                                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                                                          "Sending typing notifications"
                                                                                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                                                                                              'V3
                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                  "update-typing-indicator"
                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                      "on-typing-indicator-updated"
                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                    :> (Capture'
                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                        :> ("typing"
                                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                  TypingStatus
                                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                                     'POST
                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                     '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                         200
                                                                                                                                                                                                                                                                                                                                         "Notification sent"]
                                                                                                                                                                                                                                                                                                                                     ())))))))))))
                                                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                                                             "member-typing-qualified"
                                                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                                                "Sending typing notifications"
                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                    "update-typing-indicator"
                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                        "on-typing-indicator-updated"
                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                                      :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                          :> ("typing"
                                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                                    TypingStatus
                                                                                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                                                                                       'POST
                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                       '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                           200
                                                                                                                                                                                                                                                                                                                                           "Notification sent"]
                                                                                                                                                                                                                                                                                                                                       ()))))))))))
                                                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                                                   "remove-member-unqualified"
                                                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                                                      "Remove a member from a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                          "leave-conversation"
                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                              "on-conversation-updated"
                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                  "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                      'Brig
                                                                                                                                                                                                                                                                                                                      "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                    :> (Until
                                                                                                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                            :> (ZConn
                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                      ('ActionDenied
                                                                                                                                                                                                                                                                                                                                         'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                :> (Capture'
                                                                                                                                                                                                                                                                                                                                                      '[Description
                                                                                                                                                                                                                                                                                                                                                          "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                                                                                    :> ("members"
                                                                                                                                                                                                                                                                                                                                                        :> (Capture'
                                                                                                                                                                                                                                                                                                                                                              '[Description
                                                                                                                                                                                                                                                                                                                                                                  "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                              "usr"
                                                                                                                                                                                                                                                                                                                                                              UserId
                                                                                                                                                                                                                                                                                                                                                            :> RemoveFromConversationVerb)))))))))))))))
                                                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                                                         "remove-member"
                                                                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                                                                            "Remove a member from a conversation"
                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                "leave-conversation"
                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                                    "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                                        "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                            'Brig
                                                                                                                                                                                                                                                                                                                            "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                                                                                                                           'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                                                                                                                                                              :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                  :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                        '[Description
                                                                                                                                                                                                                                                                                                                                                            "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                        "cnv"
                                                                                                                                                                                                                                                                                                                                                        ConvId
                                                                                                                                                                                                                                                                                                                                                      :> ("members"
                                                                                                                                                                                                                                                                                                                                                          :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                '[Description
                                                                                                                                                                                                                                                                                                                                                                    "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                "usr"
                                                                                                                                                                                                                                                                                                                                                                UserId
                                                                                                                                                                                                                                                                                                                                                              :> RemoveFromConversationVerb))))))))))))))
                                                                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                                                                               "update-other-member-unqualified"
                                                                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                                                                  "Update membership of the specified user (deprecated)"
                                                                                                                                                                                                                                                                                                                :> (Deprecated
                                                                                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                                                                                          "Use `PUT /conversations/:cnv_domain/:cnv/members/:usr_domain/:usr` instead"
                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                              "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                                  "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                      'Brig
                                                                                                                                                                                                                                                                                                                                      "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                    :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                        :> (ZConn
                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                  'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                      'ConvMemberNotFound
                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                             'ModifyOtherConversationMember)
                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                              'InvalidTarget
                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                  'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                    :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                                                                        :> ("members"
                                                                                                                                                                                                                                                                                                                                                                            :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                      "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                                  "usr"
                                                                                                                                                                                                                                                                                                                                                                                  UserId
                                                                                                                                                                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                      OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                    :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                         'PUT
                                                                                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                         '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                             200
                                                                                                                                                                                                                                                                                                                                                                                             "Membership updated"]
                                                                                                                                                                                                                                                                                                                                                                                         ()))))))))))))))))))
                                                                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                                                                     "update-other-member"
                                                                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                                                                        "Update membership of the specified user"
                                                                                                                                                                                                                                                                                                                      :> (Description
                                                                                                                                                                                                                                                                                                                            "**Note**: at least one field has to be provided."
                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                                                    "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                        'Brig
                                                                                                                                                                                                                                                                                                                                        "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                      :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                          :> (ZConn
                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                        'ConvMemberNotFound
                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                               'ModifyOtherConversationMember)
                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                'InvalidTarget
                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                    'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                      :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                                                                          :> ("members"
                                                                                                                                                                                                                                                                                                                                                                              :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                                                        "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                                    "usr"
                                                                                                                                                                                                                                                                                                                                                                                    UserId
                                                                                                                                                                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                        OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                           'PUT
                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                           '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                               200
                                                                                                                                                                                                                                                                                                                                                                                               "Membership updated"]
                                                                                                                                                                                                                                                                                                                                                                                           ())))))))))))))))))
                                                                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                                                                           "update-conversation-name-deprecated"
                                                                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                                                                              "Update conversation name (deprecated)"
                                                                                                                                                                                                                                                                                                                            :> (Deprecated
                                                                                                                                                                                                                                                                                                                                :> (Description
                                                                                                                                                                                                                                                                                                                                      "Use `/conversations/:domain/:conv/name` instead."
                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                          "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                              "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                  'Brig
                                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                      ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                         'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                          'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                              'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                        :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                              '[Description
                                                                                                                                                                                                                                                                                                                                                                                  "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                              "cnv"
                                                                                                                                                                                                                                                                                                                                                                              ConvId
                                                                                                                                                                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                  ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                     'PUT
                                                                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                     (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                        "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                        "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                        Event)
                                                                                                                                                                                                                                                                                                                                                                                     (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                        Event)))))))))))))))
                                                                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                                                                 "update-conversation-name-unqualified"
                                                                                                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                                                                                                    "Update conversation name (deprecated)"
                                                                                                                                                                                                                                                                                                                                  :> (Deprecated
                                                                                                                                                                                                                                                                                                                                      :> (Description
                                                                                                                                                                                                                                                                                                                                            "Use `/conversations/:domain/:conv/name` instead."
                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                                "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                    'Galley
                                                                                                                                                                                                                                                                                                                                                    "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                        'Brig
                                                                                                                                                                                                                                                                                                                                                        "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                               'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                    'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                                                  :> ("name"
                                                                                                                                                                                                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                            ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                               'PUT
                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                  "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                  "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                                  Event)
                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                  Event))))))))))))))))
                                                                                                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                                                                                                       "update-conversation-name"
                                                                                                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                                                                                                          "Update conversation name"
                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                              "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                                                  "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                      'Brig
                                                                                                                                                                                                                                                                                                                                                      "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                             'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                  'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                            :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                :> ("name"
                                                                                                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                          ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                                "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                Event))))))))))))))
                                                                                                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                                                                                                             "update-conversation-message-timer-unqualified"
                                                                                                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                                                                                                "Update the message timer for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                              :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                                                                                                                        "Use `/conversations/:domain/:cnv/message-timer` instead."
                                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                                            "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                    'Brig
                                                                                                                                                                                                                                                                                                                                                                    "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                   'ModifyConversationMessageTimer)
                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                    'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                            'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                                                                  :> ("message-timer"
                                                                                                                                                                                                                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                            ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                               'PUT
                                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                  "Message timer unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                  "Message timer updated"
                                                                                                                                                                                                                                                                                                                                                                                                                  Event)
                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                  Event)))))))))))))))))
                                                                                                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                                                                                                   "update-conversation-message-timer"
                                                                                                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                                                                                                      "Update the message timer for a conversation"
                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                                          "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                                              "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                  'Brig
                                                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                 'ModifyConversationMessageTimer)
                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                          'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                            :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                                :> ("message-timer"
                                                                                                                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                          ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                "Message timer unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                "Message timer updated"
                                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                Event)))))))))))))))
                                                                                                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                                                                                                         "update-conversation-receipt-mode-unqualified"
                                                                                                                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                                                                                                                            "Update receipt mode for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                                          :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                                                                                                                                                    "Use `PUT /conversations/:domain/:cnv/receipt-mode` instead."
                                                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                                                                                        "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                                                            "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                                                                "update-conversation"
                                                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                    'Brig
                                                                                                                                                                                                                                                                                                                                                                                    "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                   'ModifyConversationReceiptMode)
                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                    'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                        'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                            'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                  :> ("receipt-mode"
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                            ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                               'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                  "Receipt mode unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                  "Receipt mode updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                  Event)
                                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                  Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                                                                                                                               "update-conversation-receipt-mode"
                                                                                                                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                                                                                                                  "Update receipt mode for a conversation"
                                                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                                                                                      "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                          'Galley
                                                                                                                                                                                                                                                                                                                                                                          "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                        :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                              'Galley
                                                                                                                                                                                                                                                                                                                                                                              "update-conversation"
                                                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                  'Brig
                                                                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                    :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                 'ModifyConversationReceiptMode)
                                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                          'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                        :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                            :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                  '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                      "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                  "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                :> ("receipt-mode"
                                                                                                                                                                                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                          ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                             'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                "Receipt mode unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                "Receipt mode updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                Event)
                                                                                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                Event))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                     "update-conversation-access-unqualified"
                                                                                                                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                                                                                                                        "Update access modes for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                                                            "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                'Galley
                                                                                                                                                                                                                                                                                                                                                                                "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                              :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                    'Brig
                                                                                                                                                                                                                                                                                                                                                                                    "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                  :> (Until
                                                                                                                                                                                                                                                                                                                                                                                        'V3
                                                                                                                                                                                                                                                                                                                                                                                      :> (Description
                                                                                                                                                                                                                                                                                                                                                                                            "Use PUT `/conversations/:domain/:cnv/access` instead."
                                                                                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                        ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                           'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                               'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                        'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                            'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                          :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                              :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                                    '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                        "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                    "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                  :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                      :> (VersionedReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                            ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                          :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                               'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                  "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                  "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Event)))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                           "update-conversation-access@v2"
                                                                                                                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                                                                                                                              "Update access modes for a conversation"
                                                                                                                                                                                                                                                                                                                                                                            :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                  'Galley
                                                                                                                                                                                                                                                                                                                                                                                  "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                                :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                      'Galley
                                                                                                                                                                                                                                                                                                                                                                                      "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                                    :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                          'Brig
                                                                                                                                                                                                                                                                                                                                                                                          "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                                                                                                                                                                                              'V3
                                                                                                                                                                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                          ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                             'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                              ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                 'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                  'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                      'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                          'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                              'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                            :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                      '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                          "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                      "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                    :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                        :> (VersionedReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                              'V2
                                                                                                                                                                                                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                              ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                            :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                 'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                 (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                    "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                    "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                    Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                                 (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                    Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                 "update-conversation-access"
                                                                                                                                                                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                                                                                                                                                                    "Update access modes for a conversation"
                                                                                                                                                                                                                                                                                                                                                                                  :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                        'Galley
                                                                                                                                                                                                                                                                                                                                                                                        "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                                      :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                            'Galley
                                                                                                                                                                                                                                                                                                                                                                                            "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                                          :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                                'Brig
                                                                                                                                                                                                                                                                                                                                                                                                "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                              :> (From
                                                                                                                                                                                                                                                                                                                                                                                                    'V3
                                                                                                                                                                                                                                                                                                                                                                                                  :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                      :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                   'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                    ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                       'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                        'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                    'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                      :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                          :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                    ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                       'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                       (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                          "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                          "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                          Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                                       (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                          Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                       "get-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                                                                                                                                                                          "Get self membership properties (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                                        :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                    :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                          '[Description
                                                                                                                                                                                                                                                                                                                                                                                                              "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                          "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                                                                                                                        :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                            :> Get
                                                                                                                                                                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                 (Maybe
                                                                                                                                                                                                                                                                                                                                                                                                                    Member)))))))
                                                                                                                                                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                             "update-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                                                                                                                                                "Update self membership properties (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                                              :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                        "Use `/conversations/:domain/:conv/self` instead."
                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                            'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                          :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                              :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                  :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                            '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                            "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                          :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                    MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                  :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                       'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                       '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                                                                           200
                                                                                                                                                                                                                                                                                                                                                                                                                                           "Update successful"]
                                                                                                                                                                                                                                                                                                                                                                                                                                       ()))))))))))
                                                                                                                                                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                                   "update-conversation-self"
                                                                                                                                                                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                                                                                                                                                                      "Update self membership properties"
                                                                                                                                                                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                          "**Note**: at least one field has to be provided."
                                                                                                                                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                              'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                            :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                    :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                        :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                              '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                  "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                              "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                              ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                            :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                      MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                    :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                         'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                         '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                                                                             200
                                                                                                                                                                                                                                                                                                                                                                                                                                             "Update successful"]
                                                                                                                                                                                                                                                                                                                                                                                                                                         ())))))))))
                                                                                                                                                                                                                                                                                                                                                                                                 :<|> Named
                                                                                                                                                                                                                                                                                                                                                                                                        "update-conversation-protocol"
                                                                                                                                                                                                                                                                                                                                                                                                        (Summary
                                                                                                                                                                                                                                                                                                                                                                                                           "Update the protocol of the conversation"
                                                                                                                                                                                                                                                                                                                                                                                                         :> (From
                                                                                                                                                                                                                                                                                                                                                                                                               'V5
                                                                                                                                                                                                                                                                                                                                                                                                             :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                                   "**Note**: Only proteus->mixed upgrade is supported."
                                                                                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                       'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                           'ConvInvalidProtocolTransition
                                                                                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                               ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                                  'LeaveConversation)
                                                                                                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                   'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                       'MLSMigrationCriteriaNotSatisfied
                                                                                                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                                                 :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                                                                     :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                                                         :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                                             :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                                                       "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 :> ("protocol"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ProtocolUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Event))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
      :<|> (TeamConversationAPI
            :<|> ((Named
                     "post-otr-message-unqualified"
                     (Summary
                        "Post an encrypted message to a conversation (accepts JSON or Protobuf)"
                      :> (Description PostOtrDescriptionUnqualified
                          :> (MakesFederatedCall 'Galley "on-message-sent"
                              :> (MakesFederatedCall 'Brig "get-user-clients"
                                  :> (ZLocalUser
                                      :> (ZConn
                                          :> ("conversations"
                                              :> (Capture "cnv" ConvId
                                                  :> ("otr"
                                                      :> ("messages"
                                                          :> (QueryParam
                                                                "ignore_missing" IgnoreMissing
                                                              :> (QueryParam
                                                                    "report_missing" ReportMissing
                                                                  :> (ReqBody
                                                                        '[JSON, Proto] NewOtrMessage
                                                                      :> MultiVerb
                                                                           'POST
                                                                           '[JSON]
                                                                           '[ErrorResponse
                                                                               'ConvNotFound,
                                                                             ErrorResponse
                                                                               'UnknownClient,
                                                                             ErrorResponse
                                                                               'MissingLegalholdConsentOldClients,
                                                                             ErrorResponse
                                                                               'MissingLegalholdConsent,
                                                                             Respond
                                                                               412
                                                                               "Missing clients"
                                                                               ClientMismatch,
                                                                             Respond
                                                                               201
                                                                               "Message sent"
                                                                               ClientMismatch]
                                                                           (PostOtrResponse
                                                                              ClientMismatch))))))))))))))
                   :<|> (Named
                           "post-otr-broadcast-unqualified"
                           (Summary
                              "Broadcast an encrypted message to all team members and all contacts (accepts JSON or Protobuf)"
                            :> (Description PostOtrDescriptionUnqualified
                                :> (ZLocalUser
                                    :> (ZConn
                                        :> (CanThrow 'TeamNotFound
                                            :> (CanThrow 'BroadcastLimitExceeded
                                                :> (CanThrow 'NonBindingTeam
                                                    :> ("broadcast"
                                                        :> ("otr"
                                                            :> ("messages"
                                                                :> (QueryParam
                                                                      "ignore_missing" IgnoreMissing
                                                                    :> (QueryParam
                                                                          "report_missing"
                                                                          ReportMissing
                                                                        :> (ReqBody
                                                                              '[JSON, Proto]
                                                                              NewOtrMessage
                                                                            :> MultiVerb
                                                                                 'POST
                                                                                 '[JSON]
                                                                                 '[ErrorResponse
                                                                                     'ConvNotFound,
                                                                                   ErrorResponse
                                                                                     'UnknownClient,
                                                                                   ErrorResponse
                                                                                     'MissingLegalholdConsentOldClients,
                                                                                   ErrorResponse
                                                                                     'MissingLegalholdConsent,
                                                                                   Respond
                                                                                     412
                                                                                     "Missing clients"
                                                                                     ClientMismatch,
                                                                                   Respond
                                                                                     201
                                                                                     "Message sent"
                                                                                     ClientMismatch]
                                                                                 (PostOtrResponse
                                                                                    ClientMismatch))))))))))))))
                         :<|> (Named
                                 "post-proteus-message"
                                 (Summary
                                    "Post an encrypted message to a conversation (accepts only Protobuf)"
                                  :> (Description PostOtrDescription
                                      :> (MakesFederatedCall 'Brig "get-user-clients"
                                          :> (MakesFederatedCall 'Galley "on-message-sent"
                                              :> (MakesFederatedCall 'Galley "send-message"
                                                  :> (ZLocalUser
                                                      :> (ZConn
                                                          :> ("conversations"
                                                              :> (QualifiedCapture "cnv" ConvId
                                                                  :> ("proteus"
                                                                      :> ("messages"
                                                                          :> (ReqBody
                                                                                '[Proto]
                                                                                (RawProto
                                                                                   QualifiedNewOtrMessage)
                                                                              :> MultiVerb
                                                                                   'POST
                                                                                   '[JSON]
                                                                                   '[ErrorResponse
                                                                                       'ConvNotFound,
                                                                                     ErrorResponse
                                                                                       'UnknownClient,
                                                                                     ErrorResponse
                                                                                       'MissingLegalholdConsentOldClients,
                                                                                     ErrorResponse
                                                                                       'MissingLegalholdConsent,
                                                                                     Respond
                                                                                       412
                                                                                       "Missing clients"
                                                                                       MessageSendingStatus,
                                                                                     Respond
                                                                                       201
                                                                                       "Message sent"
                                                                                       MessageSendingStatus]
                                                                                   (Either
                                                                                      (MessageNotSent
                                                                                         MessageSendingStatus)
                                                                                      MessageSendingStatus)))))))))))))
                               :<|> Named
                                      "post-proteus-broadcast"
                                      (Summary
                                         "Post an encrypted message to all team members and all contacts (accepts only Protobuf)"
                                       :> (Description PostOtrDescription
                                           :> (ZLocalUser
                                               :> (ZConn
                                                   :> (CanThrow 'TeamNotFound
                                                       :> (CanThrow 'BroadcastLimitExceeded
                                                           :> (CanThrow 'NonBindingTeam
                                                               :> ("broadcast"
                                                                   :> ("proteus"
                                                                       :> ("messages"
                                                                           :> (ReqBody
                                                                                 '[Proto]
                                                                                 QualifiedNewOtrMessage
                                                                               :> MultiVerb
                                                                                    'POST
                                                                                    '[JSON]
                                                                                    '[ErrorResponse
                                                                                        'ConvNotFound,
                                                                                      ErrorResponse
                                                                                        'UnknownClient,
                                                                                      ErrorResponse
                                                                                        'MissingLegalholdConsentOldClients,
                                                                                      ErrorResponse
                                                                                        'MissingLegalholdConsent,
                                                                                      Respond
                                                                                        412
                                                                                        "Missing clients"
                                                                                        MessageSendingStatus,
                                                                                      Respond
                                                                                        201
                                                                                        "Message sent"
                                                                                        MessageSendingStatus]
                                                                                    (Either
                                                                                       (MessageNotSent
                                                                                          MessageSendingStatus)
                                                                                       MessageSendingStatus)))))))))))))))
                  :<|> ((Named
                           "post-bot-message-unqualified"
                           (MakesFederatedCall 'Galley "on-message-sent"
                            :> (MakesFederatedCall 'Brig "get-user-clients"
                                :> (ZBot
                                    :> (ZConversation
                                        :> (CanThrow 'ConvNotFound
                                            :> ("bot"
                                                :> ("messages"
                                                    :> (QueryParam "ignore_missing" IgnoreMissing
                                                        :> (QueryParam
                                                              "report_missing" ReportMissing
                                                            :> (ReqBody '[JSON] NewOtrMessage
                                                                :> MultiVerb
                                                                     'POST
                                                                     '[JSON]
                                                                     '[ErrorResponse 'ConvNotFound,
                                                                       ErrorResponse 'UnknownClient,
                                                                       ErrorResponse
                                                                         'MissingLegalholdConsentOldClients,
                                                                       ErrorResponse
                                                                         'MissingLegalholdConsent,
                                                                       Respond
                                                                         412
                                                                         "Missing clients"
                                                                         ClientMismatch,
                                                                       Respond
                                                                         201
                                                                         "Message sent"
                                                                         ClientMismatch]
                                                                     (PostOtrResponse
                                                                        ClientMismatch)))))))))))
                         :<|> Named
                                "get-bot-conversation"
                                (CanThrow 'AccessDenied
                                 :> (CanThrow 'ConvNotFound
                                     :> (CanThrow OperationDenied
                                         :> (CanThrow 'NotATeamMember
                                             :> (CanThrow 'TeamNotFound
                                                 :> ("bot"
                                                     :> ("conversation"
                                                         :> (ZBot
                                                             :> (ZConversation
                                                                 :> Get
                                                                      '[JSON] BotConvView))))))))))
                        :<|> (TeamAPI
                              :<|> ((Named
                                       '("get", SSOConfig)
                                       (Description ""
                                        :> (ZUser
                                            :> (Summary "Get config for sso"
                                                :> (CanThrow OperationDenied
                                                    :> (CanThrow 'NotATeamMember
                                                        :> (CanThrow 'TeamNotFound
                                                            :> ("teams"
                                                                :> (Capture "tid" TeamId
                                                                    :> ("features"
                                                                        :> ("sso"
                                                                            :> Get
                                                                                 '[JSON]
                                                                                 (LockableFeature
                                                                                    SSOConfig)))))))))))
                                     :<|> ((Named
                                              '("get", LegalholdConfig)
                                              (Description ""
                                               :> (ZUser
                                                   :> (Summary "Get config for legalhold"
                                                       :> (CanThrow OperationDenied
                                                           :> (CanThrow 'NotATeamMember
                                                               :> (CanThrow 'TeamNotFound
                                                                   :> ("teams"
                                                                       :> (Capture "tid" TeamId
                                                                           :> ("features"
                                                                               :> ("legalhold"
                                                                                   :> Get
                                                                                        '[JSON]
                                                                                        (LockableFeature
                                                                                           LegalholdConfig)))))))))))
                                            :<|> Named
                                                   '("put", LegalholdConfig)
                                                   (Description ""
                                                    :> (ZUser
                                                        :> (Summary "Put config for legalhold"
                                                            :> (CanThrow OperationDenied
                                                                :> (CanThrow 'NotATeamMember
                                                                    :> (CanThrow 'TeamNotFound
                                                                        :> (CanThrow
                                                                              TeamFeatureError
                                                                            :> (CanThrowMany
                                                                                  '[ 'ActionDenied
                                                                                       'RemoveConversationMember,
                                                                                     'CannotEnableLegalHoldServiceLargeTeam,
                                                                                     'LegalHoldNotEnabled,
                                                                                     'LegalHoldDisableUnimplemented,
                                                                                     'LegalHoldServiceNotRegistered,
                                                                                     'UserLegalHoldIllegalOperation,
                                                                                     'LegalHoldCouldNotBlockConnections]
                                                                                :> ("teams"
                                                                                    :> (Capture
                                                                                          "tid"
                                                                                          TeamId
                                                                                        :> ("features"
                                                                                            :> ("legalhold"
                                                                                                :> (ReqBody
                                                                                                      '[JSON]
                                                                                                      (Feature
                                                                                                         LegalholdConfig)
                                                                                                    :> Put
                                                                                                         '[JSON]
                                                                                                         (LockableFeature
                                                                                                            LegalholdConfig)))))))))))))))
                                           :<|> ((Named
                                                    '("get", SearchVisibilityAvailableConfig)
                                                    (Description ""
                                                     :> (ZUser
                                                         :> (Summary
                                                               "Get config for searchVisibility"
                                                             :> (CanThrow OperationDenied
                                                                 :> (CanThrow 'NotATeamMember
                                                                     :> (CanThrow 'TeamNotFound
                                                                         :> ("teams"
                                                                             :> (Capture
                                                                                   "tid" TeamId
                                                                                 :> ("features"
                                                                                     :> ("searchVisibility"
                                                                                         :> Get
                                                                                              '[JSON]
                                                                                              (LockableFeature
                                                                                                 SearchVisibilityAvailableConfig)))))))))))
                                                  :<|> Named
                                                         '("put", SearchVisibilityAvailableConfig)
                                                         (Description ""
                                                          :> (ZUser
                                                              :> (Summary
                                                                    "Put config for searchVisibility"
                                                                  :> (CanThrow OperationDenied
                                                                      :> (CanThrow 'NotATeamMember
                                                                          :> (CanThrow 'TeamNotFound
                                                                              :> (CanThrow
                                                                                    TeamFeatureError
                                                                                  :> (CanThrowMany
                                                                                        '[]
                                                                                      :> ("teams"
                                                                                          :> (Capture
                                                                                                "tid"
                                                                                                TeamId
                                                                                              :> ("features"
                                                                                                  :> ("searchVisibility"
                                                                                                      :> (ReqBody
                                                                                                            '[JSON]
                                                                                                            (Feature
                                                                                                               SearchVisibilityAvailableConfig)
                                                                                                          :> Put
                                                                                                               '[JSON]
                                                                                                               (LockableFeature
                                                                                                                  SearchVisibilityAvailableConfig)))))))))))))))
                                                 :<|> (SearchVisibilityGet
                                                       :<|> (SearchVisibilitySet
                                                             :<|> (Named
                                                                     '("get",
                                                                       ValidateSAMLEmailsConfig)
                                                                     (Description ""
                                                                      :> (ZUser
                                                                          :> (Summary
                                                                                "Get config for validateSAMLemails"
                                                                              :> (CanThrow
                                                                                    OperationDenied
                                                                                  :> (CanThrow
                                                                                        'NotATeamMember
                                                                                      :> (CanThrow
                                                                                            'TeamNotFound
                                                                                          :> ("teams"
                                                                                              :> (Capture
                                                                                                    "tid"
                                                                                                    TeamId
                                                                                                  :> ("features"
                                                                                                      :> ("validateSAMLemails"
                                                                                                          :> Get
                                                                                                               '[JSON]
                                                                                                               (LockableFeature
                                                                                                                  ValidateSAMLEmailsConfig)))))))))))
                                                                   :<|> (Named
                                                                           '("get",
                                                                             DigitalSignaturesConfig)
                                                                           (Description ""
                                                                            :> (ZUser
                                                                                :> (Summary
                                                                                      "Get config for digitalSignatures"
                                                                                    :> (CanThrow
                                                                                          OperationDenied
                                                                                        :> (CanThrow
                                                                                              'NotATeamMember
                                                                                            :> (CanThrow
                                                                                                  'TeamNotFound
                                                                                                :> ("teams"
                                                                                                    :> (Capture
                                                                                                          "tid"
                                                                                                          TeamId
                                                                                                        :> ("features"
                                                                                                            :> ("digitalSignatures"
                                                                                                                :> Get
                                                                                                                     '[JSON]
                                                                                                                     (LockableFeature
                                                                                                                        DigitalSignaturesConfig)))))))))))
                                                                         :<|> ((Named
                                                                                  '("get",
                                                                                    AppLockConfig)
                                                                                  (Description ""
                                                                                   :> (ZUser
                                                                                       :> (Summary
                                                                                             "Get config for appLock"
                                                                                           :> (CanThrow
                                                                                                 OperationDenied
                                                                                               :> (CanThrow
                                                                                                     'NotATeamMember
                                                                                                   :> (CanThrow
                                                                                                         'TeamNotFound
                                                                                                       :> ("teams"
                                                                                                           :> (Capture
                                                                                                                 "tid"
                                                                                                                 TeamId
                                                                                                               :> ("features"
                                                                                                                   :> ("appLock"
                                                                                                                       :> Get
                                                                                                                            '[JSON]
                                                                                                                            (LockableFeature
                                                                                                                               AppLockConfig)))))))))))
                                                                                :<|> Named
                                                                                       '("put",
                                                                                         AppLockConfig)
                                                                                       (Description
                                                                                          ""
                                                                                        :> (ZUser
                                                                                            :> (Summary
                                                                                                  "Put config for appLock"
                                                                                                :> (CanThrow
                                                                                                      OperationDenied
                                                                                                    :> (CanThrow
                                                                                                          'NotATeamMember
                                                                                                        :> (CanThrow
                                                                                                              'TeamNotFound
                                                                                                            :> (CanThrow
                                                                                                                  TeamFeatureError
                                                                                                                :> (CanThrowMany
                                                                                                                      '[]
                                                                                                                    :> ("teams"
                                                                                                                        :> (Capture
                                                                                                                              "tid"
                                                                                                                              TeamId
                                                                                                                            :> ("features"
                                                                                                                                :> ("appLock"
                                                                                                                                    :> (ReqBody
                                                                                                                                          '[JSON]
                                                                                                                                          (Feature
                                                                                                                                             AppLockConfig)
                                                                                                                                        :> Put
                                                                                                                                             '[JSON]
                                                                                                                                             (LockableFeature
                                                                                                                                                AppLockConfig)))))))))))))))
                                                                               :<|> ((Named
                                                                                        '("get",
                                                                                          FileSharingConfig)
                                                                                        (Description
                                                                                           ""
                                                                                         :> (ZUser
                                                                                             :> (Summary
                                                                                                   "Get config for fileSharing"
                                                                                                 :> (CanThrow
                                                                                                       OperationDenied
                                                                                                     :> (CanThrow
                                                                                                           'NotATeamMember
                                                                                                         :> (CanThrow
                                                                                                               'TeamNotFound
                                                                                                             :> ("teams"
                                                                                                                 :> (Capture
                                                                                                                       "tid"
                                                                                                                       TeamId
                                                                                                                     :> ("features"
                                                                                                                         :> ("fileSharing"
                                                                                                                             :> Get
                                                                                                                                  '[JSON]
                                                                                                                                  (LockableFeature
                                                                                                                                     FileSharingConfig)))))))))))
                                                                                      :<|> Named
                                                                                             '("put",
                                                                                               FileSharingConfig)
                                                                                             (Description
                                                                                                ""
                                                                                              :> (ZUser
                                                                                                  :> (Summary
                                                                                                        "Put config for fileSharing"
                                                                                                      :> (CanThrow
                                                                                                            OperationDenied
                                                                                                          :> (CanThrow
                                                                                                                'NotATeamMember
                                                                                                              :> (CanThrow
                                                                                                                    'TeamNotFound
                                                                                                                  :> (CanThrow
                                                                                                                        TeamFeatureError
                                                                                                                      :> (CanThrowMany
                                                                                                                            '[]
                                                                                                                          :> ("teams"
                                                                                                                              :> (Capture
                                                                                                                                    "tid"
                                                                                                                                    TeamId
                                                                                                                                  :> ("features"
                                                                                                                                      :> ("fileSharing"
                                                                                                                                          :> (ReqBody
                                                                                                                                                '[JSON]
                                                                                                                                                (Feature
                                                                                                                                                   FileSharingConfig)
                                                                                                                                              :> Put
                                                                                                                                                   '[JSON]
                                                                                                                                                   (LockableFeature
                                                                                                                                                      FileSharingConfig)))))))))))))))
                                                                                     :<|> (Named
                                                                                             '("get",
                                                                                               ClassifiedDomainsConfig)
                                                                                             (Description
                                                                                                ""
                                                                                              :> (ZUser
                                                                                                  :> (Summary
                                                                                                        "Get config for classifiedDomains"
                                                                                                      :> (CanThrow
                                                                                                            OperationDenied
                                                                                                          :> (CanThrow
                                                                                                                'NotATeamMember
                                                                                                              :> (CanThrow
                                                                                                                    'TeamNotFound
                                                                                                                  :> ("teams"
                                                                                                                      :> (Capture
                                                                                                                            "tid"
                                                                                                                            TeamId
                                                                                                                          :> ("features"
                                                                                                                              :> ("classifiedDomains"
                                                                                                                                  :> Get
                                                                                                                                       '[JSON]
                                                                                                                                       (LockableFeature
                                                                                                                                          ClassifiedDomainsConfig)))))))))))
                                                                                           :<|> ((Named
                                                                                                    '("get",
                                                                                                      ConferenceCallingConfig)
                                                                                                    (Description
                                                                                                       ""
                                                                                                     :> (ZUser
                                                                                                         :> (Summary
                                                                                                               "Get config for conferenceCalling"
                                                                                                             :> (CanThrow
                                                                                                                   OperationDenied
                                                                                                                 :> (CanThrow
                                                                                                                       'NotATeamMember
                                                                                                                     :> (CanThrow
                                                                                                                           'TeamNotFound
                                                                                                                         :> ("teams"
                                                                                                                             :> (Capture
                                                                                                                                   "tid"
                                                                                                                                   TeamId
                                                                                                                                 :> ("features"
                                                                                                                                     :> ("conferenceCalling"
                                                                                                                                         :> Get
                                                                                                                                              '[JSON]
                                                                                                                                              (LockableFeature
                                                                                                                                                 ConferenceCallingConfig)))))))))))
                                                                                                  :<|> Named
                                                                                                         '("put",
                                                                                                           ConferenceCallingConfig)
                                                                                                         (Description
                                                                                                            ""
                                                                                                          :> (ZUser
                                                                                                              :> (Summary
                                                                                                                    "Put config for conferenceCalling"
                                                                                                                  :> (CanThrow
                                                                                                                        OperationDenied
                                                                                                                      :> (CanThrow
                                                                                                                            'NotATeamMember
                                                                                                                          :> (CanThrow
                                                                                                                                'TeamNotFound
                                                                                                                              :> (CanThrow
                                                                                                                                    TeamFeatureError
                                                                                                                                  :> (CanThrowMany
                                                                                                                                        '[]
                                                                                                                                      :> ("teams"
                                                                                                                                          :> (Capture
                                                                                                                                                "tid"
                                                                                                                                                TeamId
                                                                                                                                              :> ("features"
                                                                                                                                                  :> ("conferenceCalling"
                                                                                                                                                      :> (ReqBody
                                                                                                                                                            '[JSON]
                                                                                                                                                            (Feature
                                                                                                                                                               ConferenceCallingConfig)
                                                                                                                                                          :> Put
                                                                                                                                                               '[JSON]
                                                                                                                                                               (LockableFeature
                                                                                                                                                                  ConferenceCallingConfig)))))))))))))))
                                                                                                 :<|> ((Named
                                                                                                          '("get",
                                                                                                            SelfDeletingMessagesConfig)
                                                                                                          (Description
                                                                                                             ""
                                                                                                           :> (ZUser
                                                                                                               :> (Summary
                                                                                                                     "Get config for selfDeletingMessages"
                                                                                                                   :> (CanThrow
                                                                                                                         OperationDenied
                                                                                                                       :> (CanThrow
                                                                                                                             'NotATeamMember
                                                                                                                           :> (CanThrow
                                                                                                                                 'TeamNotFound
                                                                                                                               :> ("teams"
                                                                                                                                   :> (Capture
                                                                                                                                         "tid"
                                                                                                                                         TeamId
                                                                                                                                       :> ("features"
                                                                                                                                           :> ("selfDeletingMessages"
                                                                                                                                               :> Get
                                                                                                                                                    '[JSON]
                                                                                                                                                    (LockableFeature
                                                                                                                                                       SelfDeletingMessagesConfig)))))))))))
                                                                                                        :<|> Named
                                                                                                               '("put",
                                                                                                                 SelfDeletingMessagesConfig)
                                                                                                               (Description
                                                                                                                  ""
                                                                                                                :> (ZUser
                                                                                                                    :> (Summary
                                                                                                                          "Put config for selfDeletingMessages"
                                                                                                                        :> (CanThrow
                                                                                                                              OperationDenied
                                                                                                                            :> (CanThrow
                                                                                                                                  'NotATeamMember
                                                                                                                                :> (CanThrow
                                                                                                                                      'TeamNotFound
                                                                                                                                    :> (CanThrow
                                                                                                                                          TeamFeatureError
                                                                                                                                        :> (CanThrowMany
                                                                                                                                              '[]
                                                                                                                                            :> ("teams"
                                                                                                                                                :> (Capture
                                                                                                                                                      "tid"
                                                                                                                                                      TeamId
                                                                                                                                                    :> ("features"
                                                                                                                                                        :> ("selfDeletingMessages"
                                                                                                                                                            :> (ReqBody
                                                                                                                                                                  '[JSON]
                                                                                                                                                                  (Feature
                                                                                                                                                                     SelfDeletingMessagesConfig)
                                                                                                                                                                :> Put
                                                                                                                                                                     '[JSON]
                                                                                                                                                                     (LockableFeature
                                                                                                                                                                        SelfDeletingMessagesConfig)))))))))))))))
                                                                                                       :<|> ((Named
                                                                                                                '("get",
                                                                                                                  GuestLinksConfig)
                                                                                                                (Description
                                                                                                                   ""
                                                                                                                 :> (ZUser
                                                                                                                     :> (Summary
                                                                                                                           "Get config for conversationGuestLinks"
                                                                                                                         :> (CanThrow
                                                                                                                               OperationDenied
                                                                                                                             :> (CanThrow
                                                                                                                                   'NotATeamMember
                                                                                                                                 :> (CanThrow
                                                                                                                                       'TeamNotFound
                                                                                                                                     :> ("teams"
                                                                                                                                         :> (Capture
                                                                                                                                               "tid"
                                                                                                                                               TeamId
                                                                                                                                             :> ("features"
                                                                                                                                                 :> ("conversationGuestLinks"
                                                                                                                                                     :> Get
                                                                                                                                                          '[JSON]
                                                                                                                                                          (LockableFeature
                                                                                                                                                             GuestLinksConfig)))))))))))
                                                                                                              :<|> Named
                                                                                                                     '("put",
                                                                                                                       GuestLinksConfig)
                                                                                                                     (Description
                                                                                                                        ""
                                                                                                                      :> (ZUser
                                                                                                                          :> (Summary
                                                                                                                                "Put config for conversationGuestLinks"
                                                                                                                              :> (CanThrow
                                                                                                                                    OperationDenied
                                                                                                                                  :> (CanThrow
                                                                                                                                        'NotATeamMember
                                                                                                                                      :> (CanThrow
                                                                                                                                            'TeamNotFound
                                                                                                                                          :> (CanThrow
                                                                                                                                                TeamFeatureError
                                                                                                                                              :> (CanThrowMany
                                                                                                                                                    '[]
                                                                                                                                                  :> ("teams"
                                                                                                                                                      :> (Capture
                                                                                                                                                            "tid"
                                                                                                                                                            TeamId
                                                                                                                                                          :> ("features"
                                                                                                                                                              :> ("conversationGuestLinks"
                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                        '[JSON]
                                                                                                                                                                        (Feature
                                                                                                                                                                           GuestLinksConfig)
                                                                                                                                                                      :> Put
                                                                                                                                                                           '[JSON]
                                                                                                                                                                           (LockableFeature
                                                                                                                                                                              GuestLinksConfig)))))))))))))))
                                                                                                             :<|> ((Named
                                                                                                                      '("get",
                                                                                                                        SndFactorPasswordChallengeConfig)
                                                                                                                      (Description
                                                                                                                         ""
                                                                                                                       :> (ZUser
                                                                                                                           :> (Summary
                                                                                                                                 "Get config for sndFactorPasswordChallenge"
                                                                                                                               :> (CanThrow
                                                                                                                                     OperationDenied
                                                                                                                                   :> (CanThrow
                                                                                                                                         'NotATeamMember
                                                                                                                                       :> (CanThrow
                                                                                                                                             'TeamNotFound
                                                                                                                                           :> ("teams"
                                                                                                                                               :> (Capture
                                                                                                                                                     "tid"
                                                                                                                                                     TeamId
                                                                                                                                                   :> ("features"
                                                                                                                                                       :> ("sndFactorPasswordChallenge"
                                                                                                                                                           :> Get
                                                                                                                                                                '[JSON]
                                                                                                                                                                (LockableFeature
                                                                                                                                                                   SndFactorPasswordChallengeConfig)))))))))))
                                                                                                                    :<|> Named
                                                                                                                           '("put",
                                                                                                                             SndFactorPasswordChallengeConfig)
                                                                                                                           (Description
                                                                                                                              ""
                                                                                                                            :> (ZUser
                                                                                                                                :> (Summary
                                                                                                                                      "Put config for sndFactorPasswordChallenge"
                                                                                                                                    :> (CanThrow
                                                                                                                                          OperationDenied
                                                                                                                                        :> (CanThrow
                                                                                                                                              'NotATeamMember
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'TeamNotFound
                                                                                                                                                :> (CanThrow
                                                                                                                                                      TeamFeatureError
                                                                                                                                                    :> (CanThrowMany
                                                                                                                                                          '[]
                                                                                                                                                        :> ("teams"
                                                                                                                                                            :> (Capture
                                                                                                                                                                  "tid"
                                                                                                                                                                  TeamId
                                                                                                                                                                :> ("features"
                                                                                                                                                                    :> ("sndFactorPasswordChallenge"
                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                              '[JSON]
                                                                                                                                                                              (Feature
                                                                                                                                                                                 SndFactorPasswordChallengeConfig)
                                                                                                                                                                            :> Put
                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                    SndFactorPasswordChallengeConfig)))))))))))))))
                                                                                                                   :<|> ((Named
                                                                                                                            '("get",
                                                                                                                              MLSConfig)
                                                                                                                            (From
                                                                                                                               'V5
                                                                                                                             :> (Description
                                                                                                                                   ""
                                                                                                                                 :> (ZUser
                                                                                                                                     :> (Summary
                                                                                                                                           "Get config for mls"
                                                                                                                                         :> (CanThrow
                                                                                                                                               OperationDenied
                                                                                                                                             :> (CanThrow
                                                                                                                                                   'NotATeamMember
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'TeamNotFound
                                                                                                                                                     :> ("teams"
                                                                                                                                                         :> (Capture
                                                                                                                                                               "tid"
                                                                                                                                                               TeamId
                                                                                                                                                             :> ("features"
                                                                                                                                                                 :> ("mls"
                                                                                                                                                                     :> Get
                                                                                                                                                                          '[JSON]
                                                                                                                                                                          (LockableFeature
                                                                                                                                                                             MLSConfig))))))))))))
                                                                                                                          :<|> Named
                                                                                                                                 '("put",
                                                                                                                                   MLSConfig)
                                                                                                                                 (From
                                                                                                                                    'V5
                                                                                                                                  :> (Description
                                                                                                                                        ""
                                                                                                                                      :> (ZUser
                                                                                                                                          :> (Summary
                                                                                                                                                "Put config for mls"
                                                                                                                                              :> (CanThrow
                                                                                                                                                    OperationDenied
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'NotATeamMember
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'TeamNotFound
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                TeamFeatureError
                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                    '[]
                                                                                                                                                                  :> ("teams"
                                                                                                                                                                      :> (Capture
                                                                                                                                                                            "tid"
                                                                                                                                                                            TeamId
                                                                                                                                                                          :> ("features"
                                                                                                                                                                              :> ("mls"
                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                        (Feature
                                                                                                                                                                                           MLSConfig)
                                                                                                                                                                                      :> Put
                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                              MLSConfig))))))))))))))))
                                                                                                                         :<|> ((Named
                                                                                                                                  '("get",
                                                                                                                                    ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                  (Description
                                                                                                                                     ""
                                                                                                                                   :> (ZUser
                                                                                                                                       :> (Summary
                                                                                                                                             "Get config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                           :> (CanThrow
                                                                                                                                                 OperationDenied
                                                                                                                                               :> (CanThrow
                                                                                                                                                     'NotATeamMember
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'TeamNotFound
                                                                                                                                                       :> ("teams"
                                                                                                                                                           :> (Capture
                                                                                                                                                                 "tid"
                                                                                                                                                                 TeamId
                                                                                                                                                               :> ("features"
                                                                                                                                                                   :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                       :> Get
                                                                                                                                                                            '[JSON]
                                                                                                                                                                            (LockableFeature
                                                                                                                                                                               ExposeInvitationURLsToTeamAdminConfig)))))))))))
                                                                                                                                :<|> Named
                                                                                                                                       '("put",
                                                                                                                                         ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                       (Description
                                                                                                                                          ""
                                                                                                                                        :> (ZUser
                                                                                                                                            :> (Summary
                                                                                                                                                  "Put config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                :> (CanThrow
                                                                                                                                                      OperationDenied
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'NotATeamMember
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'TeamNotFound
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  TeamFeatureError
                                                                                                                                                                :> (CanThrowMany
                                                                                                                                                                      '[]
                                                                                                                                                                    :> ("teams"
                                                                                                                                                                        :> (Capture
                                                                                                                                                                              "tid"
                                                                                                                                                                              TeamId
                                                                                                                                                                            :> ("features"
                                                                                                                                                                                :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                          (Feature
                                                                                                                                                                                             ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                        :> Put
                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                ExposeInvitationURLsToTeamAdminConfig)))))))))))))))
                                                                                                                               :<|> ((Named
                                                                                                                                        '("get",
                                                                                                                                          SearchVisibilityInboundConfig)
                                                                                                                                        (Description
                                                                                                                                           ""
                                                                                                                                         :> (ZUser
                                                                                                                                             :> (Summary
                                                                                                                                                   "Get config for searchVisibilityInbound"
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       OperationDenied
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'NotATeamMember
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'TeamNotFound
                                                                                                                                                             :> ("teams"
                                                                                                                                                                 :> (Capture
                                                                                                                                                                       "tid"
                                                                                                                                                                       TeamId
                                                                                                                                                                     :> ("features"
                                                                                                                                                                         :> ("searchVisibilityInbound"
                                                                                                                                                                             :> Get
                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                     SearchVisibilityInboundConfig)))))))))))
                                                                                                                                      :<|> Named
                                                                                                                                             '("put",
                                                                                                                                               SearchVisibilityInboundConfig)
                                                                                                                                             (Description
                                                                                                                                                ""
                                                                                                                                              :> (ZUser
                                                                                                                                                  :> (Summary
                                                                                                                                                        "Put config for searchVisibilityInbound"
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            OperationDenied
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'NotATeamMember
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                            '[]
                                                                                                                                                                          :> ("teams"
                                                                                                                                                                              :> (Capture
                                                                                                                                                                                    "tid"
                                                                                                                                                                                    TeamId
                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                      :> ("searchVisibilityInbound"
                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                (Feature
                                                                                                                                                                                                   SearchVisibilityInboundConfig)
                                                                                                                                                                                              :> Put
                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                      SearchVisibilityInboundConfig)))))))))))))))
                                                                                                                                     :<|> ((Named
                                                                                                                                              '("get",
                                                                                                                                                OutlookCalIntegrationConfig)
                                                                                                                                              (Description
                                                                                                                                                 ""
                                                                                                                                               :> (ZUser
                                                                                                                                                   :> (Summary
                                                                                                                                                         "Get config for outlookCalIntegration"
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             OperationDenied
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 'NotATeamMember
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                   :> ("teams"
                                                                                                                                                                       :> (Capture
                                                                                                                                                                             "tid"
                                                                                                                                                                             TeamId
                                                                                                                                                                           :> ("features"
                                                                                                                                                                               :> ("outlookCalIntegration"
                                                                                                                                                                                   :> Get
                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                           OutlookCalIntegrationConfig)))))))))))
                                                                                                                                            :<|> Named
                                                                                                                                                   '("put",
                                                                                                                                                     OutlookCalIntegrationConfig)
                                                                                                                                                   (Description
                                                                                                                                                      ""
                                                                                                                                                    :> (ZUser
                                                                                                                                                        :> (Summary
                                                                                                                                                              "Put config for outlookCalIntegration"
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  OperationDenied
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              TeamFeatureError
                                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                                  '[]
                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                          "tid"
                                                                                                                                                                                          TeamId
                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                            :> ("outlookCalIntegration"
                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                      (Feature
                                                                                                                                                                                                         OutlookCalIntegrationConfig)
                                                                                                                                                                                                    :> Put
                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                            OutlookCalIntegrationConfig)))))))))))))))
                                                                                                                                           :<|> (Named
                                                                                                                                                   '("get",
                                                                                                                                                     MlsE2EIdConfig)
                                                                                                                                                   (From
                                                                                                                                                      'V5
                                                                                                                                                    :> (Description
                                                                                                                                                          ""
                                                                                                                                                        :> (ZUser
                                                                                                                                                            :> (Summary
                                                                                                                                                                  "Get config for mlsE2EId"
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      OperationDenied
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                :> (Capture
                                                                                                                                                                                      "tid"
                                                                                                                                                                                      TeamId
                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                        :> ("mlsE2EId"
                                                                                                                                                                                            :> Get
                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                    MlsE2EIdConfig))))))))))))
                                                                                                                                                 :<|> (Named
                                                                                                                                                         "put-MlsE2EIdConfig@v5"
                                                                                                                                                         (From
                                                                                                                                                            'V5
                                                                                                                                                          :> (Until
                                                                                                                                                                'V6
                                                                                                                                                              :> (ZUser
                                                                                                                                                                  :> (Summary
                                                                                                                                                                        "Put config for mlsE2EId"
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            OperationDenied
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                                            '[]
                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                      :> ("mlsE2EId"
                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                (Feature
                                                                                                                                                                                                                   MlsE2EIdConfig)
                                                                                                                                                                                                              :> Put
                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                      MlsE2EIdConfig)))))))))))))))
                                                                                                                                                       :<|> (Named
                                                                                                                                                               '("put",
                                                                                                                                                                 MlsE2EIdConfig)
                                                                                                                                                               (From
                                                                                                                                                                  'V6
                                                                                                                                                                :> (Description
                                                                                                                                                                      ""
                                                                                                                                                                    :> (ZUser
                                                                                                                                                                        :> (Summary
                                                                                                                                                                              "Put config for mlsE2EId"
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              TeamFeatureError
                                                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                                                  '[]
                                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                          "tid"
                                                                                                                                                                                                          TeamId
                                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                                            :> ("mlsE2EId"
                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                      (Feature
                                                                                                                                                                                                                         MlsE2EIdConfig)
                                                                                                                                                                                                                    :> Put
                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                            MlsE2EIdConfig)))))))))))))))
                                                                                                                                                             :<|> ((Named
                                                                                                                                                                      '("get",
                                                                                                                                                                        MlsMigrationConfig)
                                                                                                                                                                      (From
                                                                                                                                                                         'V5
                                                                                                                                                                       :> (Description
                                                                                                                                                                             ""
                                                                                                                                                                           :> (ZUser
                                                                                                                                                                               :> (Summary
                                                                                                                                                                                     "Get config for mlsMigration"
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                               :> ("teams"
                                                                                                                                                                                                   :> (Capture
                                                                                                                                                                                                         "tid"
                                                                                                                                                                                                         TeamId
                                                                                                                                                                                                       :> ("features"
                                                                                                                                                                                                           :> ("mlsMigration"
                                                                                                                                                                                                               :> Get
                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                       MlsMigrationConfig))))))))))))
                                                                                                                                                                    :<|> Named
                                                                                                                                                                           '("put",
                                                                                                                                                                             MlsMigrationConfig)
                                                                                                                                                                           (From
                                                                                                                                                                              'V5
                                                                                                                                                                            :> (Description
                                                                                                                                                                                  ""
                                                                                                                                                                                :> (ZUser
                                                                                                                                                                                    :> (Summary
                                                                                                                                                                                          "Put config for mlsMigration"
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              OperationDenied
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          TeamFeatureError
                                                                                                                                                                                                        :> (CanThrowMany
                                                                                                                                                                                                              '[]
                                                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                                      "tid"
                                                                                                                                                                                                                      TeamId
                                                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                                                        :> ("mlsMigration"
                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                  (Feature
                                                                                                                                                                                                                                     MlsMigrationConfig)
                                                                                                                                                                                                                                :> Put
                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                        MlsMigrationConfig))))))))))))))))
                                                                                                                                                                   :<|> ((Named
                                                                                                                                                                            '("get",
                                                                                                                                                                              EnforceFileDownloadLocationConfig)
                                                                                                                                                                            (From
                                                                                                                                                                               'V5
                                                                                                                                                                             :> (Description
                                                                                                                                                                                   "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                 :> (ZUser
                                                                                                                                                                                     :> (Summary
                                                                                                                                                                                           "Get config for enforceFileDownloadLocation"
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                                     :> ("teams"
                                                                                                                                                                                                         :> (Capture
                                                                                                                                                                                                               "tid"
                                                                                                                                                                                                               TeamId
                                                                                                                                                                                                             :> ("features"
                                                                                                                                                                                                                 :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                     :> Get
                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                                             EnforceFileDownloadLocationConfig))))))))))))
                                                                                                                                                                          :<|> Named
                                                                                                                                                                                 '("put",
                                                                                                                                                                                   EnforceFileDownloadLocationConfig)
                                                                                                                                                                                 (From
                                                                                                                                                                                    'V5
                                                                                                                                                                                  :> (Description
                                                                                                                                                                                        "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                      :> (ZUser
                                                                                                                                                                                          :> (Summary
                                                                                                                                                                                                "Put config for enforceFileDownloadLocation"
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                TeamFeatureError
                                                                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                                                                    '[]
                                                                                                                                                                                                                  :> ("teams"
                                                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                                                            "tid"
                                                                                                                                                                                                                            TeamId
                                                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                                                              :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                        (Feature
                                                                                                                                                                                                                                           EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                      :> Put
                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                                              EnforceFileDownloadLocationConfig))))))))))))))))
                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                 '("get",
                                                                                                                                                                                   LimitedEventFanoutConfig)
                                                                                                                                                                                 (From
                                                                                                                                                                                    'V5
                                                                                                                                                                                  :> (Description
                                                                                                                                                                                        ""
                                                                                                                                                                                      :> (ZUser
                                                                                                                                                                                          :> (Summary
                                                                                                                                                                                                "Get config for limitedEventFanout"
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                                      :> ("limitedEventFanout"
                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                  LimitedEventFanoutConfig))))))))))))
                                                                                                                                                                               :<|> (AllTeamFeaturesUserGet
                                                                                                                                                                                     :<|> (AllTeamFeaturesTeamGet
                                                                                                                                                                                           :<|> ((Named
                                                                                                                                                                                                    '("get-deprecated",
                                                                                                                                                                                                      SearchVisibilityAvailableConfig)
                                                                                                                                                                                                    (ZUser
                                                                                                                                                                                                     :> (Summary
                                                                                                                                                                                                           "[deprecated] Get config for searchVisibility"
                                                                                                                                                                                                         :> (Until
                                                                                                                                                                                                               'V2
                                                                                                                                                                                                             :> (Description
                                                                                                                                                                                                                   "Deprecated. Please use `GET /teams/:tid/features/searchVisibility` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                           OperationDenied
                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                                                       "tid"
                                                                                                                                                                                                                                       TeamId
                                                                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                                                                         :> ("search-visibility"
                                                                                                                                                                                                                                             :> Get
                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                                     SearchVisibilityAvailableConfig))))))))))))
                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                          '("put-deprecated",
                                                                                                                                                                                                            SearchVisibilityAvailableConfig)
                                                                                                                                                                                                          (ZUser
                                                                                                                                                                                                           :> (Summary
                                                                                                                                                                                                                 "[deprecated] Get config for searchVisibility"
                                                                                                                                                                                                               :> (Until
                                                                                                                                                                                                                     'V2
                                                                                                                                                                                                                   :> (Description
                                                                                                                                                                                                                         "Deprecated. Please use `PUT /teams/:tid/features/searchVisibility` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                 OperationDenied
                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                         TeamFeatureError
                                                                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                                                                 TeamId
                                                                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                                                                   :> ("search-visibility"
                                                                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                             (Feature
                                                                                                                                                                                                                                                                SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                                                           :> Put
                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                                                   SearchVisibilityAvailableConfig))))))))))))))
                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                '("get-deprecated",
                                                                                                                                                                                                                  ValidateSAMLEmailsConfig)
                                                                                                                                                                                                                (ZUser
                                                                                                                                                                                                                 :> (Summary
                                                                                                                                                                                                                       "[deprecated] Get config for validateSAMLemails"
                                                                                                                                                                                                                     :> (Until
                                                                                                                                                                                                                           'V2
                                                                                                                                                                                                                         :> (Description
                                                                                                                                                                                                                               "Deprecated. Please use `GET /teams/:tid/features/validateSAMLemails` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                                                                         :> ("teams"
                                                                                                                                                                                                                                             :> (Capture
                                                                                                                                                                                                                                                   "tid"
                                                                                                                                                                                                                                                   TeamId
                                                                                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                                                                                     :> ("validate-saml-emails"
                                                                                                                                                                                                                                                         :> Get
                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                                                 ValidateSAMLEmailsConfig))))))))))))
                                                                                                                                                                                                              :<|> Named
                                                                                                                                                                                                                     '("get-deprecated",
                                                                                                                                                                                                                       DigitalSignaturesConfig)
                                                                                                                                                                                                                     (ZUser
                                                                                                                                                                                                                      :> (Summary
                                                                                                                                                                                                                            "[deprecated] Get config for digitalSignatures"
                                                                                                                                                                                                                          :> (Until
                                                                                                                                                                                                                                'V2
                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                    "Deprecated. Please use `GET /teams/:tid/features/digitalSignatures` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                                                                        "tid"
                                                                                                                                                                                                                                                        TeamId
                                                                                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                                                                                          :> ("digital-signatures"
                                                                                                                                                                                                                                                              :> Get
                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                                                      DigitalSignaturesConfig)))))))))))))))
                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                         '("get-config",
                                                                                                                                                                                                           LegalholdConfig)
                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                            "[deprecated] Get feature config for feature legalhold"
                                                                                                                                                                                                          :> (Until
                                                                                                                                                                                                                'V2
                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                    "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                  :> (ZUser
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                                                  :> ("feature-configs"
                                                                                                                                                                                                                                      :> ("legalhold"
                                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                                  LegalholdConfig))))))))))
                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                               '("get-config",
                                                                                                                                                                                                                 SSOConfig)
                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                  "[deprecated] Get feature config for feature sso"
                                                                                                                                                                                                                :> (Until
                                                                                                                                                                                                                      'V2
                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                          "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                        :> (ZUser
                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                                                                        :> ("feature-configs"
                                                                                                                                                                                                                                            :> ("sso"
                                                                                                                                                                                                                                                :> Get
                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                                        SSOConfig))))))))))
                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                     '("get-config",
                                                                                                                                                                                                                       SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                        "[deprecated] Get feature config for feature searchVisibility"
                                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                          :> (Description
                                                                                                                                                                                                                                "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                              :> (ZUser
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                                                                                              :> ("feature-configs"
                                                                                                                                                                                                                                                  :> ("searchVisibility"
                                                                                                                                                                                                                                                      :> Get
                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                                                              SearchVisibilityAvailableConfig))))))))))
                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                           '("get-config",
                                                                                                                                                                                                                             ValidateSAMLEmailsConfig)
                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                              "[deprecated] Get feature config for feature validateSAMLemails"
                                                                                                                                                                                                                            :> (Until
                                                                                                                                                                                                                                  'V2
                                                                                                                                                                                                                                :> (Description
                                                                                                                                                                                                                                      "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                    :> (ZUser
                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                                                                    :> ("feature-configs"
                                                                                                                                                                                                                                                        :> ("validateSAMLemails"
                                                                                                                                                                                                                                                            :> Get
                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                                                                    ValidateSAMLEmailsConfig))))))))))
                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                 '("get-config",
                                                                                                                                                                                                                                   DigitalSignaturesConfig)
                                                                                                                                                                                                                                 (Summary
                                                                                                                                                                                                                                    "[deprecated] Get feature config for feature digitalSignatures"
                                                                                                                                                                                                                                  :> (Until
                                                                                                                                                                                                                                        'V2
                                                                                                                                                                                                                                      :> (Description
                                                                                                                                                                                                                                            "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                          :> (ZUser
                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                        OperationDenied
                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                                                                                          :> ("feature-configs"
                                                                                                                                                                                                                                                              :> ("digitalSignatures"
                                                                                                                                                                                                                                                                  :> Get
                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                                                                          DigitalSignaturesConfig))))))))))
                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                       '("get-config",
                                                                                                                                                                                                                                         AppLockConfig)
                                                                                                                                                                                                                                       (Summary
                                                                                                                                                                                                                                          "[deprecated] Get feature config for feature appLock"
                                                                                                                                                                                                                                        :> (Until
                                                                                                                                                                                                                                              'V2
                                                                                                                                                                                                                                            :> (Description
                                                                                                                                                                                                                                                  "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                :> (ZUser
                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                              OperationDenied
                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                                                                                                :> ("feature-configs"
                                                                                                                                                                                                                                                                    :> ("appLock"
                                                                                                                                                                                                                                                                        :> Get
                                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                                                                AppLockConfig))))))))))
                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                             '("get-config",
                                                                                                                                                                                                                                               FileSharingConfig)
                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                "[deprecated] Get feature config for feature fileSharing"
                                                                                                                                                                                                                                              :> (Until
                                                                                                                                                                                                                                                    'V2
                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                        "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                      :> (ZUser
                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                                                                                      :> ("feature-configs"
                                                                                                                                                                                                                                                                          :> ("fileSharing"
                                                                                                                                                                                                                                                                              :> Get
                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                                                                      FileSharingConfig))))))))))
                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                   '("get-config",
                                                                                                                                                                                                                                                     ClassifiedDomainsConfig)
                                                                                                                                                                                                                                                   (Summary
                                                                                                                                                                                                                                                      "[deprecated] Get feature config for feature classifiedDomains"
                                                                                                                                                                                                                                                    :> (Until
                                                                                                                                                                                                                                                          'V2
                                                                                                                                                                                                                                                        :> (Description
                                                                                                                                                                                                                                                              "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                            :> (ZUser
                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                          OperationDenied
                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                                                                                                            :> ("feature-configs"
                                                                                                                                                                                                                                                                                :> ("classifiedDomains"
                                                                                                                                                                                                                                                                                    :> Get
                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                                                                                            ClassifiedDomainsConfig))))))))))
                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                         '("get-config",
                                                                                                                                                                                                                                                           ConferenceCallingConfig)
                                                                                                                                                                                                                                                         (Summary
                                                                                                                                                                                                                                                            "[deprecated] Get feature config for feature conferenceCalling"
                                                                                                                                                                                                                                                          :> (Until
                                                                                                                                                                                                                                                                'V2
                                                                                                                                                                                                                                                              :> (Description
                                                                                                                                                                                                                                                                    "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                  :> (ZUser
                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                OperationDenied
                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                                                                                                  :> ("feature-configs"
                                                                                                                                                                                                                                                                                      :> ("conferenceCalling"
                                                                                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                                                                                  ConferenceCallingConfig))))))))))
                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                               '("get-config",
                                                                                                                                                                                                                                                                 SelfDeletingMessagesConfig)
                                                                                                                                                                                                                                                               (Summary
                                                                                                                                                                                                                                                                  "[deprecated] Get feature config for feature selfDeletingMessages"
                                                                                                                                                                                                                                                                :> (Until
                                                                                                                                                                                                                                                                      'V2
                                                                                                                                                                                                                                                                    :> (Description
                                                                                                                                                                                                                                                                          "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                        :> (ZUser
                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                                                                                                                        :> ("feature-configs"
                                                                                                                                                                                                                                                                                            :> ("selfDeletingMessages"
                                                                                                                                                                                                                                                                                                :> Get
                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                                                                                        SelfDeletingMessagesConfig))))))))))
                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                     '("get-config",
                                                                                                                                                                                                                                                                       GuestLinksConfig)
                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                        "[deprecated] Get feature config for feature conversationGuestLinks"
                                                                                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                                                                                            'V2
                                                                                                                                                                                                                                                                          :> (Description
                                                                                                                                                                                                                                                                                "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                              :> (ZUser
                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                                                                                                                                              :> ("feature-configs"
                                                                                                                                                                                                                                                                                                  :> ("conversationGuestLinks"
                                                                                                                                                                                                                                                                                                      :> Get
                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                                                                                                              GuestLinksConfig))))))))))
                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                           '("get-config",
                                                                                                                                                                                                                                                                             SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                                                                                           (Summary
                                                                                                                                                                                                                                                                              "[deprecated] Get feature config for feature sndFactorPasswordChallenge"
                                                                                                                                                                                                                                                                            :> (Until
                                                                                                                                                                                                                                                                                  'V2
                                                                                                                                                                                                                                                                                :> (Description
                                                                                                                                                                                                                                                                                      "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                                    :> (ZUser
                                                                                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                                                                                                                    :> ("feature-configs"
                                                                                                                                                                                                                                                                                                        :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                                                                                                                            :> Get
                                                                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                                                                                                                    SndFactorPasswordChallengeConfig))))))))))
                                                                                                                                                                                                                                                                         :<|> Named
                                                                                                                                                                                                                                                                                '("get-config",
                                                                                                                                                                                                                                                                                  MLSConfig)
                                                                                                                                                                                                                                                                                (Summary
                                                                                                                                                                                                                                                                                   "[deprecated] Get feature config for feature mls"
                                                                                                                                                                                                                                                                                 :> (Until
                                                                                                                                                                                                                                                                                       'V2
                                                                                                                                                                                                                                                                                     :> (Description
                                                                                                                                                                                                                                                                                           "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                                         :> (ZUser
                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                                                                                                                                         :> ("feature-configs"
                                                                                                                                                                                                                                                                                                             :> ("mls"
                                                                                                                                                                                                                                                                                                                 :> Get
                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                                                                                                                         MLSConfig)))))))))))))))))))))))))))))))))))))))))))))))))
                                    :<|> ((Named
                                             "mls-message"
                                             ("mls"
                                              :> (Summary "Post an MLS message"
                                                  :> (From 'V5
                                                      :> (MakesFederatedCall
                                                            'Galley "on-mls-message-sent"
                                                          :> (MakesFederatedCall
                                                                'Galley "send-mls-message"
                                                              :> (MakesFederatedCall
                                                                    'Galley
                                                                    "on-conversation-updated"
                                                                  :> (MakesFederatedCall
                                                                        'Brig "get-mls-clients"
                                                                      :> (CanThrow 'ConvAccessDenied
                                                                          :> (CanThrow
                                                                                'ConvMemberNotFound
                                                                              :> (CanThrow
                                                                                    'ConvNotFound
                                                                                  :> (CanThrow
                                                                                        'LegalHoldNotEnabled
                                                                                      :> (CanThrow
                                                                                            'MissingLegalholdConsent
                                                                                          :> (CanThrow
                                                                                                'MLSClientMismatch
                                                                                              :> (CanThrow
                                                                                                    'MLSClientSenderUserMismatch
                                                                                                  :> (CanThrow
                                                                                                        'MLSCommitMissingReferences
                                                                                                      :> (CanThrow
                                                                                                            'MLSGroupConversationMismatch
                                                                                                          :> (CanThrow
                                                                                                                'MLSInvalidLeafNodeIndex
                                                                                                              :> (CanThrow
                                                                                                                    'MLSNotEnabled
                                                                                                                  :> (CanThrow
                                                                                                                        'MLSProposalNotFound
                                                                                                                      :> (CanThrow
                                                                                                                            'MLSProtocolErrorTag
                                                                                                                          :> (CanThrow
                                                                                                                                'MLSSelfRemovalNotAllowed
                                                                                                                              :> (CanThrow
                                                                                                                                    'MLSStaleMessage
                                                                                                                                  :> (CanThrow
                                                                                                                                        'MLSSubConvClientNotInParent
                                                                                                                                      :> (CanThrow
                                                                                                                                            'MLSUnsupportedMessage
                                                                                                                                          :> (CanThrow
                                                                                                                                                'MLSUnsupportedProposal
                                                                                                                                              :> (CanThrow
                                                                                                                                                    MLSProposalFailure
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        NonFederatingBackends
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            UnreachableBackends
                                                                                                                                                          :> ("messages"
                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                  :> (ZClient
                                                                                                                                                                      :> (ZConn
                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                '[MLS]
                                                                                                                                                                                (RawMLS
                                                                                                                                                                                   Message)
                                                                                                                                                                              :> MultiVerb
                                                                                                                                                                                   'POST
                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                   '[Respond
                                                                                                                                                                                       201
                                                                                                                                                                                       "Message sent"
                                                                                                                                                                                       MLSMessageSendingStatus]
                                                                                                                                                                                   MLSMessageSendingStatus)))))))))))))))))))))))))))))))))
                                           :<|> (Named
                                                   "mls-commit-bundle"
                                                   ("mls"
                                                    :> (Summary "Post a MLS CommitBundle"
                                                        :> (From 'V5
                                                            :> (MakesFederatedCall
                                                                  'Galley "on-mls-message-sent"
                                                                :> (MakesFederatedCall
                                                                      'Galley "mls-welcome"
                                                                    :> (MakesFederatedCall
                                                                          'Galley
                                                                          "send-mls-commit-bundle"
                                                                        :> (MakesFederatedCall
                                                                              'Galley
                                                                              "on-conversation-updated"
                                                                            :> (MakesFederatedCall
                                                                                  'Brig
                                                                                  "get-mls-clients"
                                                                                :> (MakesFederatedCall
                                                                                      'Brig
                                                                                      "get-users-by-ids"
                                                                                    :> (MakesFederatedCall
                                                                                          'Brig
                                                                                          "api-version"
                                                                                        :> (CanThrow
                                                                                              'ConvAccessDenied
                                                                                            :> (CanThrow
                                                                                                  'ConvMemberNotFound
                                                                                                :> (CanThrow
                                                                                                      'ConvNotFound
                                                                                                    :> (CanThrow
                                                                                                          'LegalHoldNotEnabled
                                                                                                        :> (CanThrow
                                                                                                              'MissingLegalholdConsent
                                                                                                            :> (CanThrow
                                                                                                                  'MLSClientMismatch
                                                                                                                :> (CanThrow
                                                                                                                      'MLSClientSenderUserMismatch
                                                                                                                    :> (CanThrow
                                                                                                                          'MLSCommitMissingReferences
                                                                                                                        :> (CanThrow
                                                                                                                              'MLSGroupConversationMismatch
                                                                                                                            :> (CanThrow
                                                                                                                                  'MLSInvalidLeafNodeIndex
                                                                                                                                :> (CanThrow
                                                                                                                                      'MLSNotEnabled
                                                                                                                                    :> (CanThrow
                                                                                                                                          'MLSProposalNotFound
                                                                                                                                        :> (CanThrow
                                                                                                                                              'MLSProtocolErrorTag
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'MLSSelfRemovalNotAllowed
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'MLSStaleMessage
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'MLSSubConvClientNotInParent
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'MLSUnsupportedMessage
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'MLSUnsupportedProposal
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'MLSWelcomeMismatch
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          'MLSLegalholdIncompatible
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              MLSProposalFailure
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  NonFederatingBackends
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      UnreachableBackends
                                                                                                                                                                                    :> ("commit-bundles"
                                                                                                                                                                                        :> (ZLocalUser
                                                                                                                                                                                            :> (ZClient
                                                                                                                                                                                                :> (ZConn
                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                          '[MLS]
                                                                                                                                                                                                          (RawMLS
                                                                                                                                                                                                             CommitBundle)
                                                                                                                                                                                                        :> MultiVerb
                                                                                                                                                                                                             'POST
                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                             '[Respond
                                                                                                                                                                                                                 201
                                                                                                                                                                                                                 "Commit accepted and forwarded"
                                                                                                                                                                                                                 MLSMessageSendingStatus]
                                                                                                                                                                                                             MLSMessageSendingStatus))))))))))))))))))))))))))))))))))))))
                                                 :<|> Named
                                                        "mls-public-keys"
                                                        ("mls"
                                                         :> (Summary
                                                               "Get public keys used by the backend to sign external proposals"
                                                             :> (Description
                                                                   "The format of the returned key is determined by the `format` query parameter:\n - raw (default): base64-encoded raw public keys\n - jwk: keys are nested objects in JWK format."
                                                                 :> (From 'V5
                                                                     :> (CanThrow 'MLSNotEnabled
                                                                         :> ("public-keys"
                                                                             :> (ZLocalUser
                                                                                 :> (QueryParam
                                                                                       "format"
                                                                                       MLSPublicKeyFormat
                                                                                     :> MultiVerb
                                                                                          'GET
                                                                                          '[JSON]
                                                                                          '[Respond
                                                                                              200
                                                                                              "Public keys"
                                                                                              (MLSKeysByPurpose
                                                                                                 (MLSKeys
                                                                                                    SomeKey))]
                                                                                          (MLSKeysByPurpose
                                                                                             (MLSKeys
                                                                                                SomeKey))))))))))))
                                          :<|> (CustomBackendAPI
                                                :<|> ((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"
                                                                      :> (MakesFederatedCall
                                                                            'Galley
                                                                            "on-conversation-updated"
                                                                          :> (MakesFederatedCall
                                                                                'Galley
                                                                                "on-mls-message-sent"
                                                                              :> (MakesFederatedCall
                                                                                    'Brig
                                                                                    "get-users-by-ids"
                                                                                  :> (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"
                                                                                  :> (MakesFederatedCall
                                                                                        'Galley
                                                                                        "on-conversation-updated"
                                                                                      :> (MakesFederatedCall
                                                                                            'Galley
                                                                                            "on-mls-message-sent"
                                                                                          :> (MakesFederatedCall
                                                                                                'Brig
                                                                                                "get-users-by-ids"
                                                                                              :> (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"
                                                                                        :> (MakesFederatedCall
                                                                                              'Galley
                                                                                              "on-conversation-updated"
                                                                                            :> (MakesFederatedCall
                                                                                                  'Galley
                                                                                                  "on-mls-message-sent"
                                                                                                :> (MakesFederatedCall
                                                                                                      'Brig
                                                                                                      "get-users-by-ids"
                                                                                                    :> (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"
                                                                                              :> (MakesFederatedCall
                                                                                                    'Galley
                                                                                                    "on-conversation-updated"
                                                                                                  :> (MakesFederatedCall
                                                                                                        'Galley
                                                                                                        "on-mls-message-sent"
                                                                                                      :> (MakesFederatedCall
                                                                                                            'Brig
                                                                                                            "get-users-by-ids"
                                                                                                          :> (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"
                                                                                                   :> (MakesFederatedCall
                                                                                                         'Galley
                                                                                                         "on-conversation-updated"
                                                                                                       :> (MakesFederatedCall
                                                                                                             'Galley
                                                                                                             "on-mls-message-sent"
                                                                                                           :> (MakesFederatedCall
                                                                                                                 'Brig
                                                                                                                 "get-users-by-ids"
                                                                                                               :> (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"]
                                                                                                                                                                                                    ())))))))))))))))))))))))))))))))
                                                      :<|> ((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)))))))))))))))
                                                            :<|> TeamNotificationAPI))))))))))
     Handler
forall {k} (api :: k) (r :: EffectRow) (n :: * -> *).
HasServer api '[Domain] =>
(forall x. Sem r x -> n x) -> API api r -> ServerT api n
hoistAPIHandler (Env -> Sem GalleyEffects x -> Handler x
forall a. Env -> Sem GalleyEffects a -> Handler a
toServantHandler Env
e) API GalleyAPI GalleyEffects
API
  ((Named
      "get-unqualified-conversation"
      (Summary "Get a conversation by ID"
       :> (Until 'V3
           :> (CanThrow 'ConvNotFound
               :> (CanThrow 'ConvAccessDenied
                   :> (ZLocalUser
                       :> ("conversations"
                           :> (Capture "cnv" ConvId
                               :> MultiVerb
                                    'GET
                                    '[JSON]
                                    '[VersionedRespond 'V2 200 "Conversation" Conversation]
                                    Conversation)))))))
    :<|> (Named
            "get-unqualified-conversation-legalhold-alias"
            (Summary "Get a conversation by ID (Legalhold alias)"
             :> (Until 'V2
                 :> (CanThrow 'ConvNotFound
                     :> (CanThrow 'ConvAccessDenied
                         :> (ZLocalUser
                             :> ("legalhold"
                                 :> ("conversations"
                                     :> (Capture "cnv" ConvId
                                         :> MultiVerb
                                              'GET
                                              '[JSON]
                                              '[VersionedRespond
                                                  'V2 200 "Conversation" Conversation]
                                              Conversation))))))))
          :<|> (Named
                  "get-conversation@v2"
                  (Summary "Get a conversation by ID"
                   :> (Until 'V3
                       :> (MakesFederatedCall 'Galley "get-conversations"
                           :> (CanThrow 'ConvNotFound
                               :> (CanThrow 'ConvAccessDenied
                                   :> (ZLocalUser
                                       :> ("conversations"
                                           :> (QualifiedCapture "cnv" ConvId
                                               :> MultiVerb
                                                    'GET
                                                    '[JSON]
                                                    '[VersionedRespond
                                                        'V2 200 "Conversation" Conversation]
                                                    Conversation))))))))
                :<|> (Named
                        "get-conversation@v5"
                        (Summary "Get a conversation by ID"
                         :> (From 'V3
                             :> (Until 'V6
                                 :> (MakesFederatedCall 'Galley "get-conversations"
                                     :> (CanThrow 'ConvNotFound
                                         :> (CanThrow 'ConvAccessDenied
                                             :> (ZLocalUser
                                                 :> ("conversations"
                                                     :> (QualifiedCapture "cnv" ConvId
                                                         :> MultiVerb
                                                              'GET
                                                              '[JSON]
                                                              '[VersionedRespond
                                                                  'V5
                                                                  200
                                                                  "Conversation"
                                                                  Conversation]
                                                              Conversation)))))))))
                      :<|> (Named
                              "get-conversation"
                              (Summary "Get a conversation by ID"
                               :> (From 'V6
                                   :> (MakesFederatedCall 'Galley "get-conversations"
                                       :> (CanThrow 'ConvNotFound
                                           :> (CanThrow 'ConvAccessDenied
                                               :> (ZLocalUser
                                                   :> ("conversations"
                                                       :> (QualifiedCapture "cnv" ConvId
                                                           :> Get '[JSON] Conversation))))))))
                            :<|> (Named
                                    "get-conversation-roles"
                                    (Summary
                                       "Get existing roles available for the given conversation"
                                     :> (CanThrow 'ConvNotFound
                                         :> (CanThrow 'ConvAccessDenied
                                             :> (ZLocalUser
                                                 :> ("conversations"
                                                     :> (Capture "cnv" ConvId
                                                         :> ("roles"
                                                             :> Get
                                                                  '[JSON]
                                                                  ConversationRolesList)))))))
                                  :<|> (Named
                                          "get-group-info"
                                          (Summary "Get MLS group information"
                                           :> (From 'V5
                                               :> (MakesFederatedCall 'Galley "query-group-info"
                                                   :> (CanThrow 'ConvNotFound
                                                       :> (CanThrow 'MLSMissingGroupInfo
                                                           :> (CanThrow 'MLSNotEnabled
                                                               :> (ZLocalUser
                                                                   :> ("conversations"
                                                                       :> (QualifiedCapture
                                                                             "cnv" ConvId
                                                                           :> ("groupinfo"
                                                                               :> MultiVerb
                                                                                    'GET
                                                                                    '[MLS]
                                                                                    '[Respond
                                                                                        200
                                                                                        "The group information"
                                                                                        GroupInfoData]
                                                                                    GroupInfoData))))))))))
                                        :<|> (Named
                                                "list-conversation-ids-unqualified"
                                                (Summary
                                                   "[deprecated] Get all local conversation IDs."
                                                 :> (Until 'V3
                                                     :> (ZLocalUser
                                                         :> ("conversations"
                                                             :> ("ids"
                                                                 :> (QueryParam'
                                                                       '[Optional, Strict,
                                                                         Description
                                                                           "Conversation ID to start from (exclusive)"]
                                                                       "start"
                                                                       ConvId
                                                                     :> (QueryParam'
                                                                           '[Optional, Strict,
                                                                             Description
                                                                               "Maximum number of IDs to return"]
                                                                           "size"
                                                                           (Range 1 1000 Int32)
                                                                         :> Get
                                                                              '[JSON]
                                                                              (ConversationList
                                                                                 ConvId))))))))
                                              :<|> (Named
                                                      "list-conversation-ids-v2"
                                                      (Summary "Get all conversation IDs."
                                                       :> (Until 'V3
                                                           :> (Description PaginationDocs
                                                               :> (ZLocalUser
                                                                   :> ("conversations"
                                                                       :> ("list-ids"
                                                                           :> (ReqBody
                                                                                 '[JSON]
                                                                                 GetPaginatedConversationIds
                                                                               :> Post
                                                                                    '[JSON]
                                                                                    ConvIdsPage)))))))
                                                    :<|> (Named
                                                            "list-conversation-ids"
                                                            (Summary "Get all conversation IDs."
                                                             :> (From 'V3
                                                                 :> (Description PaginationDocs
                                                                     :> (ZLocalUser
                                                                         :> ("conversations"
                                                                             :> ("list-ids"
                                                                                 :> (ReqBody
                                                                                       '[JSON]
                                                                                       GetPaginatedConversationIds
                                                                                     :> Post
                                                                                          '[JSON]
                                                                                          ConvIdsPage)))))))
                                                          :<|> (Named
                                                                  "get-conversations"
                                                                  (Summary
                                                                     "Get all *local* conversations."
                                                                   :> (Until 'V3
                                                                       :> (Description
                                                                             "Will not return remote conversations.\n\nUse `POST /conversations/list-ids` followed by `POST /conversations/list` instead."
                                                                           :> (ZLocalUser
                                                                               :> ("conversations"
                                                                                   :> (QueryParam'
                                                                                         '[Optional,
                                                                                           Strict,
                                                                                           Description
                                                                                             "Mutually exclusive with 'start' (at most 32 IDs per request)"]
                                                                                         "ids"
                                                                                         (Range
                                                                                            1
                                                                                            32
                                                                                            (CommaSeparatedList
                                                                                               ConvId))
                                                                                       :> (QueryParam'
                                                                                             '[Optional,
                                                                                               Strict,
                                                                                               Description
                                                                                                 "Conversation ID to start from (exclusive)"]
                                                                                             "start"
                                                                                             ConvId
                                                                                           :> (QueryParam'
                                                                                                 '[Optional,
                                                                                                   Strict,
                                                                                                   Description
                                                                                                     "Maximum number of conversations to return"]
                                                                                                 "size"
                                                                                                 (Range
                                                                                                    1
                                                                                                    500
                                                                                                    Int32)
                                                                                               :> MultiVerb
                                                                                                    'GET
                                                                                                    '[JSON]
                                                                                                    '[VersionedRespond
                                                                                                        'V2
                                                                                                        200
                                                                                                        "List of local conversations"
                                                                                                        (ConversationList
                                                                                                           Conversation)]
                                                                                                    (ConversationList
                                                                                                       Conversation)))))))))
                                                                :<|> (Named
                                                                        "list-conversations@v1"
                                                                        (Summary
                                                                           "Get conversation metadata for a list of conversation ids"
                                                                         :> (MakesFederatedCall
                                                                               'Galley
                                                                               "get-conversations"
                                                                             :> (Until 'V2
                                                                                 :> (ZLocalUser
                                                                                     :> ("conversations"
                                                                                         :> ("list"
                                                                                             :> ("v2"
                                                                                                 :> (ReqBody
                                                                                                       '[JSON]
                                                                                                       ListConversations
                                                                                                     :> Post
                                                                                                          '[JSON]
                                                                                                          ConversationsResponse))))))))
                                                                      :<|> (Named
                                                                              "list-conversations@v2"
                                                                              (Summary
                                                                                 "Get conversation metadata for a list of conversation ids"
                                                                               :> (MakesFederatedCall
                                                                                     'Galley
                                                                                     "get-conversations"
                                                                                   :> (From 'V2
                                                                                       :> (Until 'V3
                                                                                           :> (ZLocalUser
                                                                                               :> ("conversations"
                                                                                                   :> ("list"
                                                                                                       :> (ReqBody
                                                                                                             '[JSON]
                                                                                                             ListConversations
                                                                                                           :> MultiVerb
                                                                                                                'POST
                                                                                                                '[JSON]
                                                                                                                '[VersionedRespond
                                                                                                                    'V2
                                                                                                                    200
                                                                                                                    "Conversation page"
                                                                                                                    ConversationsResponse]
                                                                                                                ConversationsResponse))))))))
                                                                            :<|> (Named
                                                                                    "list-conversations@v5"
                                                                                    (Summary
                                                                                       "Get conversation metadata for a list of conversation ids"
                                                                                     :> (MakesFederatedCall
                                                                                           'Galley
                                                                                           "get-conversations"
                                                                                         :> (From
                                                                                               'V3
                                                                                             :> (Until
                                                                                                   'V6
                                                                                                 :> (ZLocalUser
                                                                                                     :> ("conversations"
                                                                                                         :> ("list"
                                                                                                             :> (ReqBody
                                                                                                                   '[JSON]
                                                                                                                   ListConversations
                                                                                                                 :> MultiVerb
                                                                                                                      'POST
                                                                                                                      '[JSON]
                                                                                                                      '[VersionedRespond
                                                                                                                          'V5
                                                                                                                          200
                                                                                                                          "Conversation page"
                                                                                                                          ConversationsResponse]
                                                                                                                      ConversationsResponse))))))))
                                                                                  :<|> (Named
                                                                                          "list-conversations"
                                                                                          (Summary
                                                                                             "Get conversation metadata for a list of conversation ids"
                                                                                           :> (MakesFederatedCall
                                                                                                 'Galley
                                                                                                 "get-conversations"
                                                                                               :> (From
                                                                                                     'V6
                                                                                                   :> (ZLocalUser
                                                                                                       :> ("conversations"
                                                                                                           :> ("list"
                                                                                                               :> (ReqBody
                                                                                                                     '[JSON]
                                                                                                                     ListConversations
                                                                                                                   :> Post
                                                                                                                        '[JSON]
                                                                                                                        ConversationsResponse)))))))
                                                                                        :<|> (Named
                                                                                                "get-conversation-by-reusable-code"
                                                                                                (Summary
                                                                                                   "Get limited conversation information by key/code pair"
                                                                                                 :> (CanThrow
                                                                                                       'CodeNotFound
                                                                                                     :> (CanThrow
                                                                                                           'InvalidConversationPassword
                                                                                                         :> (CanThrow
                                                                                                               'ConvNotFound
                                                                                                             :> (CanThrow
                                                                                                                   'ConvAccessDenied
                                                                                                                 :> (CanThrow
                                                                                                                       'GuestLinksDisabled
                                                                                                                     :> (CanThrow
                                                                                                                           'NotATeamMember
                                                                                                                         :> (ZLocalUser
                                                                                                                             :> ("conversations"
                                                                                                                                 :> ("join"
                                                                                                                                     :> (QueryParam'
                                                                                                                                           '[Required,
                                                                                                                                             Strict]
                                                                                                                                           "key"
                                                                                                                                           Key
                                                                                                                                         :> (QueryParam'
                                                                                                                                               '[Required,
                                                                                                                                                 Strict]
                                                                                                                                               "code"
                                                                                                                                               Value
                                                                                                                                             :> Get
                                                                                                                                                  '[JSON]
                                                                                                                                                  ConversationCoverView))))))))))))
                                                                                              :<|> (Named
                                                                                                      "create-group-conversation@v2"
                                                                                                      (Summary
                                                                                                         "Create a new conversation"
                                                                                                       :> (DescriptionOAuthScope
                                                                                                             'WriteConversations
                                                                                                           :> (MakesFederatedCall
                                                                                                                 'Brig
                                                                                                                 "api-version"
                                                                                                               :> (MakesFederatedCall
                                                                                                                     'Galley
                                                                                                                     "on-conversation-created"
                                                                                                                   :> (MakesFederatedCall
                                                                                                                         'Galley
                                                                                                                         "on-conversation-updated"
                                                                                                                       :> (Until
                                                                                                                             'V3
                                                                                                                           :> (CanThrow
                                                                                                                                 'ConvAccessDenied
                                                                                                                               :> (CanThrow
                                                                                                                                     'MLSNonEmptyMemberList
                                                                                                                                   :> (CanThrow
                                                                                                                                         'MLSNotEnabled
                                                                                                                                       :> (CanThrow
                                                                                                                                             'NotConnected
                                                                                                                                           :> (CanThrow
                                                                                                                                                 'NotATeamMember
                                                                                                                                               :> (CanThrow
                                                                                                                                                     OperationDenied
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'MissingLegalholdConsent
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             UnreachableBackendsLegacy
                                                                                                                                                           :> (Description
                                                                                                                                                                 "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                               :> (ZLocalUser
                                                                                                                                                                   :> (ZOptConn
                                                                                                                                                                       :> ("conversations"
                                                                                                                                                                           :> (VersionedReqBody
                                                                                                                                                                                 'V2
                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                 NewConv
                                                                                                                                                                               :> MultiVerb
                                                                                                                                                                                    'POST
                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                    '[WithHeaders
                                                                                                                                                                                        ConversationHeaders
                                                                                                                                                                                        Conversation
                                                                                                                                                                                        (VersionedRespond
                                                                                                                                                                                           'V2
                                                                                                                                                                                           200
                                                                                                                                                                                           "Conversation existed"
                                                                                                                                                                                           Conversation),
                                                                                                                                                                                      WithHeaders
                                                                                                                                                                                        ConversationHeaders
                                                                                                                                                                                        Conversation
                                                                                                                                                                                        (VersionedRespond
                                                                                                                                                                                           'V2
                                                                                                                                                                                           201
                                                                                                                                                                                           "Conversation created"
                                                                                                                                                                                           Conversation)]
                                                                                                                                                                                    (ResponseForExistedCreated
                                                                                                                                                                                       Conversation))))))))))))))))))))
                                                                                                    :<|> (Named
                                                                                                            "create-group-conversation@v3"
                                                                                                            (Summary
                                                                                                               "Create a new conversation"
                                                                                                             :> (DescriptionOAuthScope
                                                                                                                   'WriteConversations
                                                                                                                 :> (MakesFederatedCall
                                                                                                                       'Brig
                                                                                                                       "api-version"
                                                                                                                     :> (MakesFederatedCall
                                                                                                                           'Galley
                                                                                                                           "on-conversation-created"
                                                                                                                         :> (MakesFederatedCall
                                                                                                                               'Galley
                                                                                                                               "on-conversation-updated"
                                                                                                                             :> (From
                                                                                                                                   'V3
                                                                                                                                 :> (Until
                                                                                                                                       'V4
                                                                                                                                     :> (CanThrow
                                                                                                                                           'ConvAccessDenied
                                                                                                                                         :> (CanThrow
                                                                                                                                               'MLSNonEmptyMemberList
                                                                                                                                             :> (CanThrow
                                                                                                                                                   'MLSNotEnabled
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'NotConnected
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'NotATeamMember
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               OperationDenied
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'MissingLegalholdConsent
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       UnreachableBackendsLegacy
                                                                                                                                                                     :> (Description
                                                                                                                                                                           "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                         :> (ZLocalUser
                                                                                                                                                                             :> (ZOptConn
                                                                                                                                                                                 :> ("conversations"
                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                           NewConv
                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                              'POST
                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                              '[WithHeaders
                                                                                                                                                                                                  ConversationHeaders
                                                                                                                                                                                                  Conversation
                                                                                                                                                                                                  (VersionedRespond
                                                                                                                                                                                                     'V3
                                                                                                                                                                                                     200
                                                                                                                                                                                                     "Conversation existed"
                                                                                                                                                                                                     Conversation),
                                                                                                                                                                                                WithHeaders
                                                                                                                                                                                                  ConversationHeaders
                                                                                                                                                                                                  Conversation
                                                                                                                                                                                                  (VersionedRespond
                                                                                                                                                                                                     'V3
                                                                                                                                                                                                     201
                                                                                                                                                                                                     "Conversation created"
                                                                                                                                                                                                     Conversation)]
                                                                                                                                                                                              (ResponseForExistedCreated
                                                                                                                                                                                                 Conversation)))))))))))))))))))))
                                                                                                          :<|> (Named
                                                                                                                  "create-group-conversation@v5"
                                                                                                                  (Summary
                                                                                                                     "Create a new conversation"
                                                                                                                   :> (MakesFederatedCall
                                                                                                                         'Brig
                                                                                                                         "api-version"
                                                                                                                       :> (MakesFederatedCall
                                                                                                                             'Brig
                                                                                                                             "get-not-fully-connected-backends"
                                                                                                                           :> (MakesFederatedCall
                                                                                                                                 'Galley
                                                                                                                                 "on-conversation-created"
                                                                                                                               :> (MakesFederatedCall
                                                                                                                                     'Galley
                                                                                                                                     "on-conversation-updated"
                                                                                                                                   :> (From
                                                                                                                                         'V4
                                                                                                                                       :> (Until
                                                                                                                                             'V6
                                                                                                                                           :> (CanThrow
                                                                                                                                                 'ConvAccessDenied
                                                                                                                                               :> (CanThrow
                                                                                                                                                     'MLSNonEmptyMemberList
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'MLSNotEnabled
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'NotConnected
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 'NotATeamMember
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     OperationDenied
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         'MissingLegalholdConsent
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             NonFederatingBackends
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 UnreachableBackends
                                                                                                                                                                               :> (Description
                                                                                                                                                                                     "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                                   :> (ZLocalUser
                                                                                                                                                                                       :> (ZOptConn
                                                                                                                                                                                           :> ("conversations"
                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                     NewConv
                                                                                                                                                                                                   :> MultiVerb
                                                                                                                                                                                                        'POST
                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                        '[WithHeaders
                                                                                                                                                                                                            ConversationHeaders
                                                                                                                                                                                                            Conversation
                                                                                                                                                                                                            (VersionedRespond
                                                                                                                                                                                                               'V5
                                                                                                                                                                                                               200
                                                                                                                                                                                                               "Conversation existed"
                                                                                                                                                                                                               Conversation),
                                                                                                                                                                                                          WithHeaders
                                                                                                                                                                                                            ConversationHeaders
                                                                                                                                                                                                            CreateGroupConversation
                                                                                                                                                                                                            (VersionedRespond
                                                                                                                                                                                                               'V5
                                                                                                                                                                                                               201
                                                                                                                                                                                                               "Conversation created"
                                                                                                                                                                                                               CreateGroupConversation)]
                                                                                                                                                                                                        CreateGroupConversationResponse)))))))))))))))))))))
                                                                                                                :<|> (Named
                                                                                                                        "create-group-conversation"
                                                                                                                        (Summary
                                                                                                                           "Create a new conversation"
                                                                                                                         :> (MakesFederatedCall
                                                                                                                               'Brig
                                                                                                                               "api-version"
                                                                                                                             :> (MakesFederatedCall
                                                                                                                                   'Brig
                                                                                                                                   "get-not-fully-connected-backends"
                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                       'Galley
                                                                                                                                       "on-conversation-created"
                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                           'Galley
                                                                                                                                           "on-conversation-updated"
                                                                                                                                         :> (From
                                                                                                                                               'V6
                                                                                                                                             :> (CanThrow
                                                                                                                                                   'ConvAccessDenied
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'MLSNonEmptyMemberList
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'MLSNotEnabled
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'NotConnected
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       OperationDenied
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           'MissingLegalholdConsent
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               NonFederatingBackends
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   UnreachableBackends
                                                                                                                                                                                 :> (Description
                                                                                                                                                                                       "This returns 201 when a new conversation is created, and 200 when the conversation already existed"
                                                                                                                                                                                     :> (ZLocalUser
                                                                                                                                                                                         :> (ZOptConn
                                                                                                                                                                                             :> ("conversations"
                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                       NewConv
                                                                                                                                                                                                     :> MultiVerb
                                                                                                                                                                                                          'POST
                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                          '[WithHeaders
                                                                                                                                                                                                              ConversationHeaders
                                                                                                                                                                                                              Conversation
                                                                                                                                                                                                              (VersionedRespond
                                                                                                                                                                                                                 'V6
                                                                                                                                                                                                                 200
                                                                                                                                                                                                                 "Conversation existed"
                                                                                                                                                                                                                 Conversation),
                                                                                                                                                                                                            WithHeaders
                                                                                                                                                                                                              ConversationHeaders
                                                                                                                                                                                                              CreateGroupConversation
                                                                                                                                                                                                              (VersionedRespond
                                                                                                                                                                                                                 'V6
                                                                                                                                                                                                                 201
                                                                                                                                                                                                                 "Conversation created"
                                                                                                                                                                                                                 CreateGroupConversation)]
                                                                                                                                                                                                          CreateGroupConversationResponse))))))))))))))))))))
                                                                                                                      :<|> (Named
                                                                                                                              "create-self-conversation@v2"
                                                                                                                              (Summary
                                                                                                                                 "Create a self-conversation"
                                                                                                                               :> (Until
                                                                                                                                     'V3
                                                                                                                                   :> (ZLocalUser
                                                                                                                                       :> ("conversations"
                                                                                                                                           :> ("self"
                                                                                                                                               :> MultiVerb
                                                                                                                                                    'POST
                                                                                                                                                    '[JSON]
                                                                                                                                                    '[WithHeaders
                                                                                                                                                        ConversationHeaders
                                                                                                                                                        Conversation
                                                                                                                                                        (VersionedRespond
                                                                                                                                                           'V2
                                                                                                                                                           200
                                                                                                                                                           "Conversation existed"
                                                                                                                                                           Conversation),
                                                                                                                                                      WithHeaders
                                                                                                                                                        ConversationHeaders
                                                                                                                                                        Conversation
                                                                                                                                                        (VersionedRespond
                                                                                                                                                           'V2
                                                                                                                                                           201
                                                                                                                                                           "Conversation created"
                                                                                                                                                           Conversation)]
                                                                                                                                                    (ResponseForExistedCreated
                                                                                                                                                       Conversation))))))
                                                                                                                            :<|> (Named
                                                                                                                                    "create-self-conversation@v5"
                                                                                                                                    (Summary
                                                                                                                                       "Create a self-conversation"
                                                                                                                                     :> (From
                                                                                                                                           'V3
                                                                                                                                         :> (Until
                                                                                                                                               'V6
                                                                                                                                             :> (ZLocalUser
                                                                                                                                                 :> ("conversations"
                                                                                                                                                     :> ("self"
                                                                                                                                                         :> MultiVerb
                                                                                                                                                              'POST
                                                                                                                                                              '[JSON]
                                                                                                                                                              '[WithHeaders
                                                                                                                                                                  ConversationHeaders
                                                                                                                                                                  Conversation
                                                                                                                                                                  (VersionedRespond
                                                                                                                                                                     'V5
                                                                                                                                                                     200
                                                                                                                                                                     "Conversation existed"
                                                                                                                                                                     Conversation),
                                                                                                                                                                WithHeaders
                                                                                                                                                                  ConversationHeaders
                                                                                                                                                                  Conversation
                                                                                                                                                                  (VersionedRespond
                                                                                                                                                                     'V5
                                                                                                                                                                     201
                                                                                                                                                                     "Conversation created"
                                                                                                                                                                     Conversation)]
                                                                                                                                                              (ResponseForExistedCreated
                                                                                                                                                                 Conversation)))))))
                                                                                                                                  :<|> (Named
                                                                                                                                          "create-self-conversation"
                                                                                                                                          (Summary
                                                                                                                                             "Create a self-conversation"
                                                                                                                                           :> (From
                                                                                                                                                 'V6
                                                                                                                                               :> (ZLocalUser
                                                                                                                                                   :> ("conversations"
                                                                                                                                                       :> ("self"
                                                                                                                                                           :> MultiVerb
                                                                                                                                                                'POST
                                                                                                                                                                '[JSON]
                                                                                                                                                                '[WithHeaders
                                                                                                                                                                    ConversationHeaders
                                                                                                                                                                    Conversation
                                                                                                                                                                    (VersionedRespond
                                                                                                                                                                       'V6
                                                                                                                                                                       200
                                                                                                                                                                       "Conversation existed"
                                                                                                                                                                       Conversation),
                                                                                                                                                                  WithHeaders
                                                                                                                                                                    ConversationHeaders
                                                                                                                                                                    Conversation
                                                                                                                                                                    (VersionedRespond
                                                                                                                                                                       'V6
                                                                                                                                                                       201
                                                                                                                                                                       "Conversation created"
                                                                                                                                                                       Conversation)]
                                                                                                                                                                (ResponseForExistedCreated
                                                                                                                                                                   Conversation))))))
                                                                                                                                        :<|> (Named
                                                                                                                                                "get-mls-self-conversation@v5"
                                                                                                                                                (Summary
                                                                                                                                                   "Get the user's MLS self-conversation"
                                                                                                                                                 :> (From
                                                                                                                                                       'V5
                                                                                                                                                     :> (Until
                                                                                                                                                           'V6
                                                                                                                                                         :> (ZLocalUser
                                                                                                                                                             :> ("conversations"
                                                                                                                                                                 :> ("mls-self"
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           'MLSNotEnabled
                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                              'GET
                                                                                                                                                                              '[JSON]
                                                                                                                                                                              '[VersionedRespond
                                                                                                                                                                                  'V5
                                                                                                                                                                                  200
                                                                                                                                                                                  "The MLS self-conversation"
                                                                                                                                                                                  Conversation]
                                                                                                                                                                              Conversation)))))))
                                                                                                                                              :<|> (Named
                                                                                                                                                      "get-mls-self-conversation"
                                                                                                                                                      (Summary
                                                                                                                                                         "Get the user's MLS self-conversation"
                                                                                                                                                       :> (From
                                                                                                                                                             'V6
                                                                                                                                                           :> (ZLocalUser
                                                                                                                                                               :> ("conversations"
                                                                                                                                                                   :> ("mls-self"
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             'MLSNotEnabled
                                                                                                                                                                           :> MultiVerb
                                                                                                                                                                                'GET
                                                                                                                                                                                '[JSON]
                                                                                                                                                                                '[Respond
                                                                                                                                                                                    200
                                                                                                                                                                                    "The MLS self-conversation"
                                                                                                                                                                                    Conversation]
                                                                                                                                                                                Conversation))))))
                                                                                                                                                    :<|> (Named
                                                                                                                                                            "get-subconversation"
                                                                                                                                                            (Summary
                                                                                                                                                               "Get information about an MLS subconversation"
                                                                                                                                                             :> (From
                                                                                                                                                                   'V5
                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                       'Galley
                                                                                                                                                                       "get-sub-conversation"
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           'ConvNotFound
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               'ConvAccessDenied
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   'MLSSubConvUnsupportedConvType
                                                                                                                                                                                 :> (ZLocalUser
                                                                                                                                                                                     :> ("conversations"
                                                                                                                                                                                         :> (QualifiedCapture
                                                                                                                                                                                               "cnv"
                                                                                                                                                                                               ConvId
                                                                                                                                                                                             :> ("subconversations"
                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                       "subconv"
                                                                                                                                                                                                       SubConvId
                                                                                                                                                                                                     :> MultiVerb
                                                                                                                                                                                                          'GET
                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                          '[Respond
                                                                                                                                                                                                              200
                                                                                                                                                                                                              "Subconversation"
                                                                                                                                                                                                              PublicSubConversation]
                                                                                                                                                                                                          PublicSubConversation)))))))))))
                                                                                                                                                          :<|> (Named
                                                                                                                                                                  "leave-subconversation"
                                                                                                                                                                  (Summary
                                                                                                                                                                     "Leave an MLS subconversation"
                                                                                                                                                                   :> (From
                                                                                                                                                                         'V5
                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                             'Galley
                                                                                                                                                                             "on-mls-message-sent"
                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                 'Galley
                                                                                                                                                                                 "leave-sub-conversation"
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     'ConvNotFound
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         'ConvAccessDenied
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             'MLSProtocolErrorTag
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'MLSStaleMessage
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'MLSNotEnabled
                                                                                                                                                                                                   :> (ZLocalUser
                                                                                                                                                                                                       :> (ZClient
                                                                                                                                                                                                           :> ("conversations"
                                                                                                                                                                                                               :> (QualifiedCapture
                                                                                                                                                                                                                     "cnv"
                                                                                                                                                                                                                     ConvId
                                                                                                                                                                                                                   :> ("subconversations"
                                                                                                                                                                                                                       :> (Capture
                                                                                                                                                                                                                             "subconv"
                                                                                                                                                                                                                             SubConvId
                                                                                                                                                                                                                           :> ("self"
                                                                                                                                                                                                                               :> MultiVerb
                                                                                                                                                                                                                                    'DELETE
                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                    '[RespondEmpty
                                                                                                                                                                                                                                        200
                                                                                                                                                                                                                                        "OK"]
                                                                                                                                                                                                                                    ()))))))))))))))))
                                                                                                                                                                :<|> (Named
                                                                                                                                                                        "delete-subconversation"
                                                                                                                                                                        (Summary
                                                                                                                                                                           "Delete an MLS subconversation"
                                                                                                                                                                         :> (From
                                                                                                                                                                               'V5
                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                   'Galley
                                                                                                                                                                                   "delete-sub-conversation"
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       'ConvAccessDenied
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           'ConvNotFound
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               'MLSNotEnabled
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   'MLSStaleMessage
                                                                                                                                                                                                 :> (ZLocalUser
                                                                                                                                                                                                     :> ("conversations"
                                                                                                                                                                                                         :> (QualifiedCapture
                                                                                                                                                                                                               "cnv"
                                                                                                                                                                                                               ConvId
                                                                                                                                                                                                             :> ("subconversations"
                                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                                       "subconv"
                                                                                                                                                                                                                       SubConvId
                                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                           DeleteSubConversationRequest
                                                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                                                              'DELETE
                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                              '[Respond
                                                                                                                                                                                                                                  200
                                                                                                                                                                                                                                  "Deletion successful"
                                                                                                                                                                                                                                  ()]
                                                                                                                                                                                                                              ())))))))))))))
                                                                                                                                                                      :<|> (Named
                                                                                                                                                                              "get-subconversation-group-info"
                                                                                                                                                                              (Summary
                                                                                                                                                                                 "Get MLS group information of subconversation"
                                                                                                                                                                               :> (From
                                                                                                                                                                                     'V5
                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                         'Galley
                                                                                                                                                                                         "query-group-info"
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             'ConvNotFound
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'MLSMissingGroupInfo
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'MLSNotEnabled
                                                                                                                                                                                                   :> (ZLocalUser
                                                                                                                                                                                                       :> ("conversations"
                                                                                                                                                                                                           :> (QualifiedCapture
                                                                                                                                                                                                                 "cnv"
                                                                                                                                                                                                                 ConvId
                                                                                                                                                                                                               :> ("subconversations"
                                                                                                                                                                                                                   :> (Capture
                                                                                                                                                                                                                         "subconv"
                                                                                                                                                                                                                         SubConvId
                                                                                                                                                                                                                       :> ("groupinfo"
                                                                                                                                                                                                                           :> MultiVerb
                                                                                                                                                                                                                                'GET
                                                                                                                                                                                                                                '[MLS]
                                                                                                                                                                                                                                '[Respond
                                                                                                                                                                                                                                    200
                                                                                                                                                                                                                                    "The group information"
                                                                                                                                                                                                                                    GroupInfoData]
                                                                                                                                                                                                                                GroupInfoData))))))))))))
                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                    "create-one-to-one-conversation@v2"
                                                                                                                                                                                    (Summary
                                                                                                                                                                                       "Create a 1:1 conversation"
                                                                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                                                                           'Brig
                                                                                                                                                                                           "api-version"
                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                               'Galley
                                                                                                                                                                                               "on-conversation-created"
                                                                                                                                                                                             :> (Until
                                                                                                                                                                                                   'V3
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       'ConvAccessDenied
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           'InvalidOperation
                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                               'NoBindingTeamMembers
                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                   'NonBindingTeam
                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                           'NotConnected
                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                       'MissingLegalholdConsent
                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                           UnreachableBackendsLegacy
                                                                                                                                                                                                                                         :> (ZLocalUser
                                                                                                                                                                                                                                             :> (ZConn
                                                                                                                                                                                                                                                 :> ("conversations"
                                                                                                                                                                                                                                                     :> ("one2one"
                                                                                                                                                                                                                                                         :> (VersionedReqBody
                                                                                                                                                                                                                                                               'V2
                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                               NewConv
                                                                                                                                                                                                                                                             :> MultiVerb
                                                                                                                                                                                                                                                                  'POST
                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                  '[WithHeaders
                                                                                                                                                                                                                                                                      ConversationHeaders
                                                                                                                                                                                                                                                                      Conversation
                                                                                                                                                                                                                                                                      (VersionedRespond
                                                                                                                                                                                                                                                                         'V2
                                                                                                                                                                                                                                                                         200
                                                                                                                                                                                                                                                                         "Conversation existed"
                                                                                                                                                                                                                                                                         Conversation),
                                                                                                                                                                                                                                                                    WithHeaders
                                                                                                                                                                                                                                                                      ConversationHeaders
                                                                                                                                                                                                                                                                      Conversation
                                                                                                                                                                                                                                                                      (VersionedRespond
                                                                                                                                                                                                                                                                         'V2
                                                                                                                                                                                                                                                                         201
                                                                                                                                                                                                                                                                         "Conversation created"
                                                                                                                                                                                                                                                                         Conversation)]
                                                                                                                                                                                                                                                                  (ResponseForExistedCreated
                                                                                                                                                                                                                                                                     Conversation))))))))))))))))))))
                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                          "create-one-to-one-conversation"
                                                                                                                                                                                          (Summary
                                                                                                                                                                                             "Create a 1:1 conversation"
                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                 'Galley
                                                                                                                                                                                                 "on-conversation-created"
                                                                                                                                                                                               :> (From
                                                                                                                                                                                                     'V3
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'ConvAccessDenied
                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                             'InvalidOperation
                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                 'NoBindingTeamMembers
                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                     'NonBindingTeam
                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                             'NotConnected
                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                 OperationDenied
                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                         'MissingLegalholdConsent
                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                             UnreachableBackendsLegacy
                                                                                                                                                                                                                                           :> (ZLocalUser
                                                                                                                                                                                                                                               :> (ZConn
                                                                                                                                                                                                                                                   :> ("conversations"
                                                                                                                                                                                                                                                       :> ("one2one"
                                                                                                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                 NewConv
                                                                                                                                                                                                                                                               :> MultiVerb
                                                                                                                                                                                                                                                                    'POST
                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                    '[WithHeaders
                                                                                                                                                                                                                                                                        ConversationHeaders
                                                                                                                                                                                                                                                                        Conversation
                                                                                                                                                                                                                                                                        (VersionedRespond
                                                                                                                                                                                                                                                                           'V3
                                                                                                                                                                                                                                                                           200
                                                                                                                                                                                                                                                                           "Conversation existed"
                                                                                                                                                                                                                                                                           Conversation),
                                                                                                                                                                                                                                                                      WithHeaders
                                                                                                                                                                                                                                                                        ConversationHeaders
                                                                                                                                                                                                                                                                        Conversation
                                                                                                                                                                                                                                                                        (VersionedRespond
                                                                                                                                                                                                                                                                           'V3
                                                                                                                                                                                                                                                                           201
                                                                                                                                                                                                                                                                           "Conversation created"
                                                                                                                                                                                                                                                                           Conversation)]
                                                                                                                                                                                                                                                                    (ResponseForExistedCreated
                                                                                                                                                                                                                                                                       Conversation)))))))))))))))))))
                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                "get-one-to-one-mls-conversation@v5"
                                                                                                                                                                                                (Summary
                                                                                                                                                                                                   "Get an MLS 1:1 conversation"
                                                                                                                                                                                                 :> (From
                                                                                                                                                                                                       'V5
                                                                                                                                                                                                     :> (Until
                                                                                                                                                                                                           'V6
                                                                                                                                                                                                         :> (ZLocalUser
                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                   'MLSNotEnabled
                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                       'NotConnected
                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                           'MLSFederatedOne2OneNotSupported
                                                                                                                                                                                                                         :> ("conversations"
                                                                                                                                                                                                                             :> ("one2one"
                                                                                                                                                                                                                                 :> (QualifiedCapture
                                                                                                                                                                                                                                       "usr"
                                                                                                                                                                                                                                       UserId
                                                                                                                                                                                                                                     :> MultiVerb
                                                                                                                                                                                                                                          'GET
                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                          '[VersionedRespond
                                                                                                                                                                                                                                              'V5
                                                                                                                                                                                                                                              200
                                                                                                                                                                                                                                              "MLS 1-1 conversation"
                                                                                                                                                                                                                                              Conversation]
                                                                                                                                                                                                                                          Conversation))))))))))
                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                      "get-one-to-one-mls-conversation@v6"
                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                         "Get an MLS 1:1 conversation"
                                                                                                                                                                                                       :> (From
                                                                                                                                                                                                             'V6
                                                                                                                                                                                                           :> (Until
                                                                                                                                                                                                                 'V7
                                                                                                                                                                                                               :> (ZLocalUser
                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                         'MLSNotEnabled
                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                             'NotConnected
                                                                                                                                                                                                                           :> ("conversations"
                                                                                                                                                                                                                               :> ("one2one"
                                                                                                                                                                                                                                   :> (QualifiedCapture
                                                                                                                                                                                                                                         "usr"
                                                                                                                                                                                                                                         UserId
                                                                                                                                                                                                                                       :> MultiVerb
                                                                                                                                                                                                                                            'GET
                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                            '[Respond
                                                                                                                                                                                                                                                200
                                                                                                                                                                                                                                                "MLS 1-1 conversation"
                                                                                                                                                                                                                                                (MLSOne2OneConversation
                                                                                                                                                                                                                                                   MLSPublicKey)]
                                                                                                                                                                                                                                            (MLSOne2OneConversation
                                                                                                                                                                                                                                               MLSPublicKey))))))))))
                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                            "get-one-to-one-mls-conversation"
                                                                                                                                                                                                            (Summary
                                                                                                                                                                                                               "Get an MLS 1:1 conversation"
                                                                                                                                                                                                             :> (From
                                                                                                                                                                                                                   'V7
                                                                                                                                                                                                                 :> (ZLocalUser
                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                           'MLSNotEnabled
                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                               'NotConnected
                                                                                                                                                                                                                             :> ("conversations"
                                                                                                                                                                                                                                 :> ("one2one"
                                                                                                                                                                                                                                     :> (QualifiedCapture
                                                                                                                                                                                                                                           "usr"
                                                                                                                                                                                                                                           UserId
                                                                                                                                                                                                                                         :> (QueryParam
                                                                                                                                                                                                                                               "format"
                                                                                                                                                                                                                                               MLSPublicKeyFormat
                                                                                                                                                                                                                                             :> MultiVerb
                                                                                                                                                                                                                                                  'GET
                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                  '[Respond
                                                                                                                                                                                                                                                      200
                                                                                                                                                                                                                                                      "MLS 1-1 conversation"
                                                                                                                                                                                                                                                      (MLSOne2OneConversation
                                                                                                                                                                                                                                                         SomeKey)]
                                                                                                                                                                                                                                                  (MLSOne2OneConversation
                                                                                                                                                                                                                                                     SomeKey))))))))))
                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                  "add-members-to-conversation-unqualified"
                                                                                                                                                                                                                  (Summary
                                                                                                                                                                                                                     "Add members to an existing conversation (deprecated)"
                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                         'Galley
                                                                                                                                                                                                                         "on-conversation-updated"
                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                             'Galley
                                                                                                                                                                                                                             "on-mls-message-sent"
                                                                                                                                                                                                                           :> (Until
                                                                                                                                                                                                                                 'V2
                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                     ('ActionDenied
                                                                                                                                                                                                                                        'AddConversationMember)
                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                         ('ActionDenied
                                                                                                                                                                                                                                            'LeaveConversation)
                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                             'ConvNotFound
                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                 'InvalidOperation
                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                     'TooManyMembers
                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                         'ConvAccessDenied
                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                 'NotConnected
                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                     'MissingLegalholdConsent
                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                         NonFederatingBackends
                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                             UnreachableBackends
                                                                                                                                                                                                                                                                           :> (ZLocalUser
                                                                                                                                                                                                                                                                               :> (ZConn
                                                                                                                                                                                                                                                                                   :> ("conversations"
                                                                                                                                                                                                                                                                                       :> (Capture
                                                                                                                                                                                                                                                                                             "cnv"
                                                                                                                                                                                                                                                                                             ConvId
                                                                                                                                                                                                                                                                                           :> ("members"
                                                                                                                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                     Invite
                                                                                                                                                                                                                                                                                                   :> MultiVerb
                                                                                                                                                                                                                                                                                                        'POST
                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                        ConvUpdateResponses
                                                                                                                                                                                                                                                                                                        (UpdateResult
                                                                                                                                                                                                                                                                                                           Event))))))))))))))))))))))
                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                        "add-members-to-conversation-unqualified2"
                                                                                                                                                                                                                        (Summary
                                                                                                                                                                                                                           "Add qualified members to an existing conversation."
                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                               'Galley
                                                                                                                                                                                                                               "on-conversation-updated"
                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                   'Galley
                                                                                                                                                                                                                                   "on-mls-message-sent"
                                                                                                                                                                                                                                 :> (Until
                                                                                                                                                                                                                                       'V2
                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                           ('ActionDenied
                                                                                                                                                                                                                                              'AddConversationMember)
                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                               ('ActionDenied
                                                                                                                                                                                                                                                  'LeaveConversation)
                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                   'ConvNotFound
                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                       'InvalidOperation
                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                           'TooManyMembers
                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                               'ConvAccessDenied
                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                       'NotConnected
                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                           'MissingLegalholdConsent
                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                               NonFederatingBackends
                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                   UnreachableBackends
                                                                                                                                                                                                                                                                                 :> (ZLocalUser
                                                                                                                                                                                                                                                                                     :> (ZConn
                                                                                                                                                                                                                                                                                         :> ("conversations"
                                                                                                                                                                                                                                                                                             :> (Capture
                                                                                                                                                                                                                                                                                                   "cnv"
                                                                                                                                                                                                                                                                                                   ConvId
                                                                                                                                                                                                                                                                                                 :> ("members"
                                                                                                                                                                                                                                                                                                     :> ("v2"
                                                                                                                                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                               InviteQualified
                                                                                                                                                                                                                                                                                                             :> MultiVerb
                                                                                                                                                                                                                                                                                                                  'POST
                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                  ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                  (UpdateResult
                                                                                                                                                                                                                                                                                                                     Event)))))))))))))))))))))))
                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                              "add-members-to-conversation"
                                                                                                                                                                                                                              (Summary
                                                                                                                                                                                                                                 "Add qualified members to an existing conversation."
                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                     'Galley
                                                                                                                                                                                                                                     "on-conversation-updated"
                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                         'Galley
                                                                                                                                                                                                                                         "on-mls-message-sent"
                                                                                                                                                                                                                                       :> (From
                                                                                                                                                                                                                                             'V2
                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                 ('ActionDenied
                                                                                                                                                                                                                                                    'AddConversationMember)
                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                     ('ActionDenied
                                                                                                                                                                                                                                                        'LeaveConversation)
                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                         'ConvNotFound
                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                             'InvalidOperation
                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                 'TooManyMembers
                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                     'ConvAccessDenied
                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                             'NotConnected
                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                 'MissingLegalholdConsent
                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                     NonFederatingBackends
                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                         UnreachableBackends
                                                                                                                                                                                                                                                                                       :> (ZLocalUser
                                                                                                                                                                                                                                                                                           :> (ZConn
                                                                                                                                                                                                                                                                                               :> ("conversations"
                                                                                                                                                                                                                                                                                                   :> (QualifiedCapture
                                                                                                                                                                                                                                                                                                         "cnv"
                                                                                                                                                                                                                                                                                                         ConvId
                                                                                                                                                                                                                                                                                                       :> ("members"
                                                                                                                                                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                                                                 InviteQualified
                                                                                                                                                                                                                                                                                                               :> MultiVerb
                                                                                                                                                                                                                                                                                                                    'POST
                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                    ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                    (UpdateResult
                                                                                                                                                                                                                                                                                                                       Event))))))))))))))))))))))
                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                    "join-conversation-by-id-unqualified"
                                                                                                                                                                                                                                    (Summary
                                                                                                                                                                                                                                       "Join a conversation by its ID (if link access enabled) (deprecated)"
                                                                                                                                                                                                                                     :> (Until
                                                                                                                                                                                                                                           'V5
                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                               'Galley
                                                                                                                                                                                                                                               "on-conversation-updated"
                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                   'ConvAccessDenied
                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                       'ConvNotFound
                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                           'InvalidOperation
                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                   'TooManyMembers
                                                                                                                                                                                                                                                                 :> (ZLocalUser
                                                                                                                                                                                                                                                                     :> (ZConn
                                                                                                                                                                                                                                                                         :> ("conversations"
                                                                                                                                                                                                                                                                             :> (Capture'
                                                                                                                                                                                                                                                                                   '[Description
                                                                                                                                                                                                                                                                                       "Conversation ID"]
                                                                                                                                                                                                                                                                                   "cnv"
                                                                                                                                                                                                                                                                                   ConvId
                                                                                                                                                                                                                                                                                 :> ("join"
                                                                                                                                                                                                                                                                                     :> MultiVerb
                                                                                                                                                                                                                                                                                          'POST
                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                          ConvJoinResponses
                                                                                                                                                                                                                                                                                          (UpdateResult
                                                                                                                                                                                                                                                                                             Event))))))))))))))
                                                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                                                          "join-conversation-by-code-unqualified"
                                                                                                                                                                                                                                          (Summary
                                                                                                                                                                                                                                             "Join a conversation using a reusable code"
                                                                                                                                                                                                                                           :> (Description
                                                                                                                                                                                                                                                 "If the guest links team feature is disabled, this will fail with 409 GuestLinksDisabled.Note that this is currently inconsistent (for backwards compatibility reasons) with `POST /conversations/code-check` which responds with 404 CodeNotFound if guest links are disabled."
                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                     'Galley
                                                                                                                                                                                                                                                     "on-conversation-updated"
                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                         'CodeNotFound
                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                             'InvalidConversationPassword
                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                 'ConvAccessDenied
                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                     'ConvNotFound
                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                         'GuestLinksDisabled
                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                             'InvalidOperation
                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                     'TooManyMembers
                                                                                                                                                                                                                                                                                   :> (ZLocalUser
                                                                                                                                                                                                                                                                                       :> (ZConn
                                                                                                                                                                                                                                                                                           :> ("conversations"
                                                                                                                                                                                                                                                                                               :> ("join"
                                                                                                                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                         JoinConversationByCode
                                                                                                                                                                                                                                                                                                       :> MultiVerb
                                                                                                                                                                                                                                                                                                            'POST
                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                            ConvJoinResponses
                                                                                                                                                                                                                                                                                                            (UpdateResult
                                                                                                                                                                                                                                                                                                               Event)))))))))))))))))
                                                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                                                "code-check"
                                                                                                                                                                                                                                                (Summary
                                                                                                                                                                                                                                                   "Check validity of a conversation code."
                                                                                                                                                                                                                                                 :> (Description
                                                                                                                                                                                                                                                       "If the guest links team feature is disabled, this will fail with 404 CodeNotFound.Note that this is currently inconsistent (for backwards compatibility reasons) with `POST /conversations/join` which responds with 409 GuestLinksDisabled if guest links are disabled."
                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                           'CodeNotFound
                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                               'ConvNotFound
                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                   'InvalidConversationPassword
                                                                                                                                                                                                                                                                 :> ("conversations"
                                                                                                                                                                                                                                                                     :> ("code-check"
                                                                                                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                               ConversationCode
                                                                                                                                                                                                                                                                             :> MultiVerb
                                                                                                                                                                                                                                                                                  'POST
                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                  '[RespondEmpty
                                                                                                                                                                                                                                                                                      200
                                                                                                                                                                                                                                                                                      "Valid"]
                                                                                                                                                                                                                                                                                  ()))))))))
                                                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                                                      "create-conversation-code-unqualified@v3"
                                                                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                                                                         "Create or recreate a conversation code"
                                                                                                                                                                                                                                                       :> (Until
                                                                                                                                                                                                                                                             'V4
                                                                                                                                                                                                                                                           :> (DescriptionOAuthScope
                                                                                                                                                                                                                                                                 'WriteConversationsCode
                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                     'ConvAccessDenied
                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                         'ConvNotFound
                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                             'GuestLinksDisabled
                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                 'CreateConversationCodeConflict
                                                                                                                                                                                                                                                                               :> (ZUser
                                                                                                                                                                                                                                                                                   :> (ZHostOpt
                                                                                                                                                                                                                                                                                       :> (ZOptConn
                                                                                                                                                                                                                                                                                           :> ("conversations"
                                                                                                                                                                                                                                                                                               :> (Capture'
                                                                                                                                                                                                                                                                                                     '[Description
                                                                                                                                                                                                                                                                                                         "Conversation ID"]
                                                                                                                                                                                                                                                                                                     "cnv"
                                                                                                                                                                                                                                                                                                     ConvId
                                                                                                                                                                                                                                                                                                   :> ("code"
                                                                                                                                                                                                                                                                                                       :> CreateConversationCodeVerb)))))))))))))
                                                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                                                            "create-conversation-code-unqualified"
                                                                                                                                                                                                                                                            (Summary
                                                                                                                                                                                                                                                               "Create or recreate a conversation code"
                                                                                                                                                                                                                                                             :> (From
                                                                                                                                                                                                                                                                   'V4
                                                                                                                                                                                                                                                                 :> (DescriptionOAuthScope
                                                                                                                                                                                                                                                                       'WriteConversationsCode
                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                           'ConvAccessDenied
                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                               'ConvNotFound
                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                   'GuestLinksDisabled
                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                       'CreateConversationCodeConflict
                                                                                                                                                                                                                                                                                     :> (ZUser
                                                                                                                                                                                                                                                                                         :> (ZHostOpt
                                                                                                                                                                                                                                                                                             :> (ZOptConn
                                                                                                                                                                                                                                                                                                 :> ("conversations"
                                                                                                                                                                                                                                                                                                     :> (Capture'
                                                                                                                                                                                                                                                                                                           '[Description
                                                                                                                                                                                                                                                                                                               "Conversation ID"]
                                                                                                                                                                                                                                                                                                           "cnv"
                                                                                                                                                                                                                                                                                                           ConvId
                                                                                                                                                                                                                                                                                                         :> ("code"
                                                                                                                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                                   CreateConversationCodeRequest
                                                                                                                                                                                                                                                                                                                 :> CreateConversationCodeVerb))))))))))))))
                                                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                                                  "get-conversation-guest-links-status"
                                                                                                                                                                                                                                                                  (Summary
                                                                                                                                                                                                                                                                     "Get the status of the guest links feature for a conversation that potentially has been created by someone from another team."
                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                         'ConvAccessDenied
                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                             'ConvNotFound
                                                                                                                                                                                                                                                                           :> (ZUser
                                                                                                                                                                                                                                                                               :> ("conversations"
                                                                                                                                                                                                                                                                                   :> (Capture'
                                                                                                                                                                                                                                                                                         '[Description
                                                                                                                                                                                                                                                                                             "Conversation ID"]
                                                                                                                                                                                                                                                                                         "cnv"
                                                                                                                                                                                                                                                                                         ConvId
                                                                                                                                                                                                                                                                                       :> ("features"
                                                                                                                                                                                                                                                                                           :> ("conversationGuestLinks"
                                                                                                                                                                                                                                                                                               :> Get
                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                                                                                                       GuestLinksConfig)))))))))
                                                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                                                        "remove-code-unqualified"
                                                                                                                                                                                                                                                                        (Summary
                                                                                                                                                                                                                                                                           "Delete conversation code"
                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                               'ConvAccessDenied
                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                   'ConvNotFound
                                                                                                                                                                                                                                                                                 :> (ZLocalUser
                                                                                                                                                                                                                                                                                     :> (ZConn
                                                                                                                                                                                                                                                                                         :> ("conversations"
                                                                                                                                                                                                                                                                                             :> (Capture'
                                                                                                                                                                                                                                                                                                   '[Description
                                                                                                                                                                                                                                                                                                       "Conversation ID"]
                                                                                                                                                                                                                                                                                                   "cnv"
                                                                                                                                                                                                                                                                                                   ConvId
                                                                                                                                                                                                                                                                                                 :> ("code"
                                                                                                                                                                                                                                                                                                     :> MultiVerb
                                                                                                                                                                                                                                                                                                          'DELETE
                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                          '[Respond
                                                                                                                                                                                                                                                                                                              200
                                                                                                                                                                                                                                                                                                              "Conversation code deleted."
                                                                                                                                                                                                                                                                                                              Event]
                                                                                                                                                                                                                                                                                                          Event))))))))
                                                                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                                                                              "get-code"
                                                                                                                                                                                                                                                                              (Summary
                                                                                                                                                                                                                                                                                 "Get existing conversation code"
                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                     'CodeNotFound
                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                         'ConvAccessDenied
                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                             'ConvNotFound
                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                 'GuestLinksDisabled
                                                                                                                                                                                                                                                                                               :> (ZHostOpt
                                                                                                                                                                                                                                                                                                   :> (ZLocalUser
                                                                                                                                                                                                                                                                                                       :> ("conversations"
                                                                                                                                                                                                                                                                                                           :> (Capture'
                                                                                                                                                                                                                                                                                                                 '[Description
                                                                                                                                                                                                                                                                                                                     "Conversation ID"]
                                                                                                                                                                                                                                                                                                                 "cnv"
                                                                                                                                                                                                                                                                                                                 ConvId
                                                                                                                                                                                                                                                                                                               :> ("code"
                                                                                                                                                                                                                                                                                                                   :> MultiVerb
                                                                                                                                                                                                                                                                                                                        'GET
                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                        '[Respond
                                                                                                                                                                                                                                                                                                                            200
                                                                                                                                                                                                                                                                                                                            "Conversation Code"
                                                                                                                                                                                                                                                                                                                            ConversationCodeInfo]
                                                                                                                                                                                                                                                                                                                        ConversationCodeInfo))))))))))
                                                                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                                                                    "member-typing-unqualified"
                                                                                                                                                                                                                                                                                    (Summary
                                                                                                                                                                                                                                                                                       "Sending typing notifications"
                                                                                                                                                                                                                                                                                     :> (Until
                                                                                                                                                                                                                                                                                           'V3
                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                               'Galley
                                                                                                                                                                                                                                                                                               "update-typing-indicator"
                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                   'Galley
                                                                                                                                                                                                                                                                                                   "on-typing-indicator-updated"
                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                       'ConvNotFound
                                                                                                                                                                                                                                                                                                     :> (ZLocalUser
                                                                                                                                                                                                                                                                                                         :> (ZConn
                                                                                                                                                                                                                                                                                                             :> ("conversations"
                                                                                                                                                                                                                                                                                                                 :> (Capture'
                                                                                                                                                                                                                                                                                                                       '[Description
                                                                                                                                                                                                                                                                                                                           "Conversation ID"]
                                                                                                                                                                                                                                                                                                                       "cnv"
                                                                                                                                                                                                                                                                                                                       ConvId
                                                                                                                                                                                                                                                                                                                     :> ("typing"
                                                                                                                                                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                               TypingStatus
                                                                                                                                                                                                                                                                                                                             :> MultiVerb
                                                                                                                                                                                                                                                                                                                                  'POST
                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                  '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                      200
                                                                                                                                                                                                                                                                                                                                      "Notification sent"]
                                                                                                                                                                                                                                                                                                                                  ())))))))))))
                                                                                                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                                                                                                          "member-typing-qualified"
                                                                                                                                                                                                                                                                                          (Summary
                                                                                                                                                                                                                                                                                             "Sending typing notifications"
                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                 'Galley
                                                                                                                                                                                                                                                                                                 "update-typing-indicator"
                                                                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                     'Galley
                                                                                                                                                                                                                                                                                                     "on-typing-indicator-updated"
                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                         'ConvNotFound
                                                                                                                                                                                                                                                                                                       :> (ZLocalUser
                                                                                                                                                                                                                                                                                                           :> (ZConn
                                                                                                                                                                                                                                                                                                               :> ("conversations"
                                                                                                                                                                                                                                                                                                                   :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                         '[Description
                                                                                                                                                                                                                                                                                                                             "Conversation ID"]
                                                                                                                                                                                                                                                                                                                         "cnv"
                                                                                                                                                                                                                                                                                                                         ConvId
                                                                                                                                                                                                                                                                                                                       :> ("typing"
                                                                                                                                                                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                                                                                 TypingStatus
                                                                                                                                                                                                                                                                                                                               :> MultiVerb
                                                                                                                                                                                                                                                                                                                                    'POST
                                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                                    '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                        200
                                                                                                                                                                                                                                                                                                                                        "Notification sent"]
                                                                                                                                                                                                                                                                                                                                    ()))))))))))
                                                                                                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                                                                                                "remove-member-unqualified"
                                                                                                                                                                                                                                                                                                (Summary
                                                                                                                                                                                                                                                                                                   "Remove a member from a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                       'Galley
                                                                                                                                                                                                                                                                                                       "leave-conversation"
                                                                                                                                                                                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                           'Galley
                                                                                                                                                                                                                                                                                                           "on-conversation-updated"
                                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                               'Galley
                                                                                                                                                                                                                                                                                                               "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                   'Brig
                                                                                                                                                                                                                                                                                                                   "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                 :> (Until
                                                                                                                                                                                                                                                                                                                       'V2
                                                                                                                                                                                                                                                                                                                     :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                         :> (ZConn
                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                   ('ActionDenied
                                                                                                                                                                                                                                                                                                                                      'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                       'ConvNotFound
                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                           'InvalidOperation
                                                                                                                                                                                                                                                                                                                                         :> ("conversations"
                                                                                                                                                                                                                                                                                                                                             :> (Capture'
                                                                                                                                                                                                                                                                                                                                                   '[Description
                                                                                                                                                                                                                                                                                                                                                       "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                   "cnv"
                                                                                                                                                                                                                                                                                                                                                   ConvId
                                                                                                                                                                                                                                                                                                                                                 :> ("members"
                                                                                                                                                                                                                                                                                                                                                     :> (Capture'
                                                                                                                                                                                                                                                                                                                                                           '[Description
                                                                                                                                                                                                                                                                                                                                                               "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                           "usr"
                                                                                                                                                                                                                                                                                                                                                           UserId
                                                                                                                                                                                                                                                                                                                                                         :> RemoveFromConversationVerb)))))))))))))))
                                                                                                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                                                                                                      "remove-member"
                                                                                                                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                                                                                                                         "Remove a member from a conversation"
                                                                                                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                             'Galley
                                                                                                                                                                                                                                                                                                             "leave-conversation"
                                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                 'Galley
                                                                                                                                                                                                                                                                                                                 "on-conversation-updated"
                                                                                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                     'Galley
                                                                                                                                                                                                                                                                                                                     "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                         'Brig
                                                                                                                                                                                                                                                                                                                         "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                       :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                           :> (ZConn
                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                     ('ActionDenied
                                                                                                                                                                                                                                                                                                                                        'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                         'ConvNotFound
                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                             'InvalidOperation
                                                                                                                                                                                                                                                                                                                                           :> ("conversations"
                                                                                                                                                                                                                                                                                                                                               :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                     '[Description
                                                                                                                                                                                                                                                                                                                                                         "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                     "cnv"
                                                                                                                                                                                                                                                                                                                                                     ConvId
                                                                                                                                                                                                                                                                                                                                                   :> ("members"
                                                                                                                                                                                                                                                                                                                                                       :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                             '[Description
                                                                                                                                                                                                                                                                                                                                                                 "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                             "usr"
                                                                                                                                                                                                                                                                                                                                                             UserId
                                                                                                                                                                                                                                                                                                                                                           :> RemoveFromConversationVerb))))))))))))))
                                                                                                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                                                                                                            "update-other-member-unqualified"
                                                                                                                                                                                                                                                                                                            (Summary
                                                                                                                                                                                                                                                                                                               "Update membership of the specified user (deprecated)"
                                                                                                                                                                                                                                                                                                             :> (Deprecated
                                                                                                                                                                                                                                                                                                                 :> (Description
                                                                                                                                                                                                                                                                                                                       "Use `PUT /conversations/:cnv_domain/:cnv/members/:usr_domain/:usr` instead"
                                                                                                                                                                                                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                           'Galley
                                                                                                                                                                                                                                                                                                                           "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                               'Galley
                                                                                                                                                                                                                                                                                                                               "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                   'Brig
                                                                                                                                                                                                                                                                                                                                   "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                 :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                     :> (ZConn
                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                               'ConvNotFound
                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                   'ConvMemberNotFound
                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                       ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                          'ModifyOtherConversationMember)
                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                           'InvalidTarget
                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                               'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                             :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                 :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                       '[Description
                                                                                                                                                                                                                                                                                                                                                                           "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                       "cnv"
                                                                                                                                                                                                                                                                                                                                                                       ConvId
                                                                                                                                                                                                                                                                                                                                                                     :> ("members"
                                                                                                                                                                                                                                                                                                                                                                         :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                               '[Description
                                                                                                                                                                                                                                                                                                                                                                                   "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                               "usr"
                                                                                                                                                                                                                                                                                                                                                                               UserId
                                                                                                                                                                                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                   OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                 :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                      'PUT
                                                                                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                      '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                          200
                                                                                                                                                                                                                                                                                                                                                                                          "Membership updated"]
                                                                                                                                                                                                                                                                                                                                                                                      ()))))))))))))))))))
                                                                                                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                                                                                                  "update-other-member"
                                                                                                                                                                                                                                                                                                                  (Summary
                                                                                                                                                                                                                                                                                                                     "Update membership of the specified user"
                                                                                                                                                                                                                                                                                                                   :> (Description
                                                                                                                                                                                                                                                                                                                         "**Note**: at least one field has to be provided."
                                                                                                                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                             'Galley
                                                                                                                                                                                                                                                                                                                             "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                 'Galley
                                                                                                                                                                                                                                                                                                                                 "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                     'Brig
                                                                                                                                                                                                                                                                                                                                     "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                   :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                       :> (ZConn
                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                 'ConvNotFound
                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                     'ConvMemberNotFound
                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                         ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                            'ModifyOtherConversationMember)
                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                             'InvalidTarget
                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                 'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                               :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                   :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                         '[Description
                                                                                                                                                                                                                                                                                                                                                                             "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                         "cnv"
                                                                                                                                                                                                                                                                                                                                                                         ConvId
                                                                                                                                                                                                                                                                                                                                                                       :> ("members"
                                                                                                                                                                                                                                                                                                                                                                           :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                 '[Description
                                                                                                                                                                                                                                                                                                                                                                                     "Target User ID"]
                                                                                                                                                                                                                                                                                                                                                                                 "usr"
                                                                                                                                                                                                                                                                                                                                                                                 UserId
                                                                                                                                                                                                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                     OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                   :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                        'PUT
                                                                                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                        '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                            200
                                                                                                                                                                                                                                                                                                                                                                                            "Membership updated"]
                                                                                                                                                                                                                                                                                                                                                                                        ())))))))))))))))))
                                                                                                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                                                                                                        "update-conversation-name-deprecated"
                                                                                                                                                                                                                                                                                                                        (Summary
                                                                                                                                                                                                                                                                                                                           "Update conversation name (deprecated)"
                                                                                                                                                                                                                                                                                                                         :> (Deprecated
                                                                                                                                                                                                                                                                                                                             :> (Description
                                                                                                                                                                                                                                                                                                                                   "Use `/conversations/:domain/:conv/name` instead."
                                                                                                                                                                                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                       'Galley
                                                                                                                                                                                                                                                                                                                                       "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                           'Galley
                                                                                                                                                                                                                                                                                                                                           "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                               'Brig
                                                                                                                                                                                                                                                                                                                                               "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                   ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                      'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                       'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                           'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                         :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                             :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                 :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                     :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                           '[Description
                                                                                                                                                                                                                                                                                                                                                                               "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                           "cnv"
                                                                                                                                                                                                                                                                                                                                                                           ConvId
                                                                                                                                                                                                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                                                                                                                                                               ConversationRename
                                                                                                                                                                                                                                                                                                                                                                             :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                  'PUT
                                                                                                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                  (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                     "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                     "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                     Event)
                                                                                                                                                                                                                                                                                                                                                                                  (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                     Event)))))))))))))))
                                                                                                                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                                                                                                                              "update-conversation-name-unqualified"
                                                                                                                                                                                                                                                                                                                              (Summary
                                                                                                                                                                                                                                                                                                                                 "Update conversation name (deprecated)"
                                                                                                                                                                                                                                                                                                                               :> (Deprecated
                                                                                                                                                                                                                                                                                                                                   :> (Description
                                                                                                                                                                                                                                                                                                                                         "Use `/conversations/:domain/:conv/name` instead."
                                                                                                                                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                             'Galley
                                                                                                                                                                                                                                                                                                                                             "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                 'Galley
                                                                                                                                                                                                                                                                                                                                                 "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                     'Brig
                                                                                                                                                                                                                                                                                                                                                     "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                         ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                            'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                             'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                 'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                               :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                   :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                       :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                           :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                 '[Description
                                                                                                                                                                                                                                                                                                                                                                                     "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                 "cnv"
                                                                                                                                                                                                                                                                                                                                                                                 ConvId
                                                                                                                                                                                                                                                                                                                                                                               :> ("name"
                                                                                                                                                                                                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                         ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                       :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                            'PUT
                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                            (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                               "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                               "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                               Event)
                                                                                                                                                                                                                                                                                                                                                                                            (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                               Event))))))))))))))))
                                                                                                                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                                                                                                                    "update-conversation-name"
                                                                                                                                                                                                                                                                                                                                    (Summary
                                                                                                                                                                                                                                                                                                                                       "Update conversation name"
                                                                                                                                                                                                                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                           'Galley
                                                                                                                                                                                                                                                                                                                                           "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                               'Galley
                                                                                                                                                                                                                                                                                                                                               "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                   'Brig
                                                                                                                                                                                                                                                                                                                                                   "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                       ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                          'ModifyConversationName)
                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                           'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                               'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                             :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                 :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                     :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                         :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                               '[Description
                                                                                                                                                                                                                                                                                                                                                                                   "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                               "cnv"
                                                                                                                                                                                                                                                                                                                                                                               ConvId
                                                                                                                                                                                                                                                                                                                                                                             :> ("name"
                                                                                                                                                                                                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                       ConversationRename
                                                                                                                                                                                                                                                                                                                                                                                     :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                          'PUT
                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                          (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                             "Name updated"
                                                                                                                                                                                                                                                                                                                                                                                             "Name unchanged"
                                                                                                                                                                                                                                                                                                                                                                                             Event)
                                                                                                                                                                                                                                                                                                                                                                                          (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                             Event))))))))))))))
                                                                                                                                                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                                                                                                                                                          "update-conversation-message-timer-unqualified"
                                                                                                                                                                                                                                                                                                                                          (Summary
                                                                                                                                                                                                                                                                                                                                             "Update the message timer for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                           :> (Deprecated
                                                                                                                                                                                                                                                                                                                                               :> (Description
                                                                                                                                                                                                                                                                                                                                                     "Use `/conversations/:domain/:cnv/message-timer` instead."
                                                                                                                                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                         'Galley
                                                                                                                                                                                                                                                                                                                                                         "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                             'Galley
                                                                                                                                                                                                                                                                                                                                                             "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                 'Brig
                                                                                                                                                                                                                                                                                                                                                                 "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                               :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                   :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                             ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                'ModifyConversationMessageTimer)
                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                 'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                     'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                         'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                       :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                           :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                 '[Description
                                                                                                                                                                                                                                                                                                                                                                                                     "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                 "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                 ConvId
                                                                                                                                                                                                                                                                                                                                                                                               :> ("message-timer"
                                                                                                                                                                                                                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                         ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                                                                                       :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                            'PUT
                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                            (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                               "Message timer unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                               "Message timer updated"
                                                                                                                                                                                                                                                                                                                                                                                                               Event)
                                                                                                                                                                                                                                                                                                                                                                                                            (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                               Event)))))))))))))))))
                                                                                                                                                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                                                                                                                                                "update-conversation-message-timer"
                                                                                                                                                                                                                                                                                                                                                (Summary
                                                                                                                                                                                                                                                                                                                                                   "Update the message timer for a conversation"
                                                                                                                                                                                                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                       'Galley
                                                                                                                                                                                                                                                                                                                                                       "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                           'Galley
                                                                                                                                                                                                                                                                                                                                                           "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                               'Brig
                                                                                                                                                                                                                                                                                                                                                               "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                             :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                 :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                           ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                              'ModifyConversationMessageTimer)
                                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                               'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                   'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                       'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                     :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                         :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                               '[Description
                                                                                                                                                                                                                                                                                                                                                                                                   "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                               "cnv"
                                                                                                                                                                                                                                                                                                                                                                                               ConvId
                                                                                                                                                                                                                                                                                                                                                                                             :> ("message-timer"
                                                                                                                                                                                                                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                       ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                                                                                     :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                          'PUT
                                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                          (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                             "Message timer unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                             "Message timer updated"
                                                                                                                                                                                                                                                                                                                                                                                                             Event)
                                                                                                                                                                                                                                                                                                                                                                                                          (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                             Event)))))))))))))))
                                                                                                                                                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                                                                                                                                                      "update-conversation-receipt-mode-unqualified"
                                                                                                                                                                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                                                                                                                                                                         "Update receipt mode for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                                       :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                           :> (Description
                                                                                                                                                                                                                                                                                                                                                                 "Use `PUT /conversations/:domain/:cnv/receipt-mode` instead."
                                                                                                                                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                     'Galley
                                                                                                                                                                                                                                                                                                                                                                     "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                         'Galley
                                                                                                                                                                                                                                                                                                                                                                         "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                             'Galley
                                                                                                                                                                                                                                                                                                                                                                             "update-conversation"
                                                                                                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                 'Brig
                                                                                                                                                                                                                                                                                                                                                                                 "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                               :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                   :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                             ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                'ModifyConversationReceiptMode)
                                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                 'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                     'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                         'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                       :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                           :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                 '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                     "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                 "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                 ConvId
                                                                                                                                                                                                                                                                                                                                                                                                               :> ("receipt-mode"
                                                                                                                                                                                                                                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                         ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                       :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                            'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                            (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                               "Receipt mode unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                               "Receipt mode updated"
                                                                                                                                                                                                                                                                                                                                                                                                                               Event)
                                                                                                                                                                                                                                                                                                                                                                                                                            (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                               Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                                                                                                                                                            "update-conversation-receipt-mode"
                                                                                                                                                                                                                                                                                                                                                            (Summary
                                                                                                                                                                                                                                                                                                                                                               "Update receipt mode for a conversation"
                                                                                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                   'Galley
                                                                                                                                                                                                                                                                                                                                                                   "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                       'Galley
                                                                                                                                                                                                                                                                                                                                                                       "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                     :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                           'Galley
                                                                                                                                                                                                                                                                                                                                                                           "update-conversation"
                                                                                                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                               'Brig
                                                                                                                                                                                                                                                                                                                                                                               "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                             :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                 :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                           ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                              'ModifyConversationReceiptMode)
                                                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                               'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                   'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                       'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                     :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                         :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                               '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                   "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                               "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                               ConvId
                                                                                                                                                                                                                                                                                                                                                                                                             :> ("receipt-mode"
                                                                                                                                                                                                                                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                       ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                     :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                          'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                          (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                             "Receipt mode unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                             "Receipt mode updated"
                                                                                                                                                                                                                                                                                                                                                                                                                             Event)
                                                                                                                                                                                                                                                                                                                                                                                                                          (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                             Event))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                  "update-conversation-access-unqualified"
                                                                                                                                                                                                                                                                                                                                                                  (Summary
                                                                                                                                                                                                                                                                                                                                                                     "Update access modes for a conversation (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                         'Galley
                                                                                                                                                                                                                                                                                                                                                                         "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                             'Galley
                                                                                                                                                                                                                                                                                                                                                                             "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                           :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                 'Brig
                                                                                                                                                                                                                                                                                                                                                                                 "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                               :> (Until
                                                                                                                                                                                                                                                                                                                                                                                     'V3
                                                                                                                                                                                                                                                                                                                                                                                   :> (Description
                                                                                                                                                                                                                                                                                                                                                                                         "Use PUT `/conversations/:domain/:cnv/access` instead."
                                                                                                                                                                                                                                                                                                                                                                                       :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                           :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                     ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                        'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                         ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                            'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                             'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                 'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                     'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                         'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                       :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                           :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                                 '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                     "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                 "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                 ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                               :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                   :> (VersionedReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                         'V2
                                                                                                                                                                                                                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                         ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                       :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                            'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                            (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                               "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                               "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                               Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                            (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                               Event)))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                        "update-conversation-access@v2"
                                                                                                                                                                                                                                                                                                                                                                        (Summary
                                                                                                                                                                                                                                                                                                                                                                           "Update access modes for a conversation"
                                                                                                                                                                                                                                                                                                                                                                         :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                               'Galley
                                                                                                                                                                                                                                                                                                                                                                               "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                             :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                   'Galley
                                                                                                                                                                                                                                                                                                                                                                                   "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                                 :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                       'Brig
                                                                                                                                                                                                                                                                                                                                                                                       "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                     :> (Until
                                                                                                                                                                                                                                                                                                                                                                                           'V3
                                                                                                                                                                                                                                                                                                                                                                                         :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                             :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                       ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                          'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                           ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                              'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                               'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                   'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                       'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                           'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                         :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                             :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                   '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                       "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                   "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                   ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                 :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                     :> (VersionedReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                           'V2
                                                                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                           ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                         :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                              'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                              (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                 "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                 "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                 Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                              (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                 Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                              "update-conversation-access"
                                                                                                                                                                                                                                                                                                                                                                              (Summary
                                                                                                                                                                                                                                                                                                                                                                                 "Update access modes for a conversation"
                                                                                                                                                                                                                                                                                                                                                                               :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                     'Galley
                                                                                                                                                                                                                                                                                                                                                                                     "on-conversation-updated"
                                                                                                                                                                                                                                                                                                                                                                                   :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                         'Galley
                                                                                                                                                                                                                                                                                                                                                                                         "on-mls-message-sent"
                                                                                                                                                                                                                                                                                                                                                                                       :> (MakesFederatedCall
                                                                                                                                                                                                                                                                                                                                                                                             'Brig
                                                                                                                                                                                                                                                                                                                                                                                             "get-users-by-ids"
                                                                                                                                                                                                                                                                                                                                                                                           :> (From
                                                                                                                                                                                                                                                                                                                                                                                                 'V3
                                                                                                                                                                                                                                                                                                                                                                                               :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                   :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                             ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                'ModifyConversationAccess)
                                                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                 ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                    'RemoveConversationMember)
                                                                                                                                                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                     'ConvAccessDenied
                                                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                         'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                             'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                 'InvalidTargetAccess
                                                                                                                                                                                                                                                                                                                                                                                                                               :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                   :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                         '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                             "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                         "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                         ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                       :> ("access"
                                                                                                                                                                                                                                                                                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                 ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                                                                               :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                    'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                    (UpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                       "Access unchanged"
                                                                                                                                                                                                                                                                                                                                                                                                                                                       "Access updated"
                                                                                                                                                                                                                                                                                                                                                                                                                                                       Event)
                                                                                                                                                                                                                                                                                                                                                                                                                                                    (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                       Event))))))))))))))))))
                                                                                                                                                                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                    "get-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                    (Summary
                                                                                                                                                                                                                                                                                                                                                                                       "Get self membership properties (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                                     :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                                                         :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                             :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                 :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                       '[Description
                                                                                                                                                                                                                                                                                                                                                                                                           "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                       "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                       ConvId
                                                                                                                                                                                                                                                                                                                                                                                                     :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                         :> Get
                                                                                                                                                                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                              (Maybe
                                                                                                                                                                                                                                                                                                                                                                                                                 Member)))))))
                                                                                                                                                                                                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                          "update-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                          (Summary
                                                                                                                                                                                                                                                                                                                                                                                             "Update self membership properties (deprecated)"
                                                                                                                                                                                                                                                                                                                                                                                           :> (Deprecated
                                                                                                                                                                                                                                                                                                                                                                                               :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                     "Use `/conversations/:domain/:conv/self` instead."
                                                                                                                                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                         'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                       :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                           :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                               :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                   :> (Capture'
                                                                                                                                                                                                                                                                                                                                                                                                                         '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                             "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                         "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                         ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                       :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                 MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                               :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                    'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                    '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                                                                        200
                                                                                                                                                                                                                                                                                                                                                                                                                                        "Update successful"]
                                                                                                                                                                                                                                                                                                                                                                                                                                    ()))))))))))
                                                                                                                                                                                                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                                "update-conversation-self"
                                                                                                                                                                                                                                                                                                                                                                                                (Summary
                                                                                                                                                                                                                                                                                                                                                                                                   "Update self membership properties"
                                                                                                                                                                                                                                                                                                                                                                                                 :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                       "**Note**: at least one field has to be provided."
                                                                                                                                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                           'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                         :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                             :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                 :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                     :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                           '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                               "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                           "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                           ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                         :> ("self"
                                                                                                                                                                                                                                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                   MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                 :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                      'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                      '[RespondEmpty
                                                                                                                                                                                                                                                                                                                                                                                                                                          200
                                                                                                                                                                                                                                                                                                                                                                                                                                          "Update successful"]
                                                                                                                                                                                                                                                                                                                                                                                                                                      ())))))))))
                                                                                                                                                                                                                                                                                                                                                                                              :<|> Named
                                                                                                                                                                                                                                                                                                                                                                                                     "update-conversation-protocol"
                                                                                                                                                                                                                                                                                                                                                                                                     (Summary
                                                                                                                                                                                                                                                                                                                                                                                                        "Update the protocol of the conversation"
                                                                                                                                                                                                                                                                                                                                                                                                      :> (From
                                                                                                                                                                                                                                                                                                                                                                                                            'V5
                                                                                                                                                                                                                                                                                                                                                                                                          :> (Description
                                                                                                                                                                                                                                                                                                                                                                                                                "**Note**: Only proteus->mixed upgrade is supported."
                                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                    'ConvNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                        'ConvInvalidProtocolTransition
                                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                            ('ActionDenied
                                                                                                                                                                                                                                                                                                                                                                                                                               'LeaveConversation)
                                                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                'InvalidOperation
                                                                                                                                                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                    'MLSMigrationCriteriaNotSatisfied
                                                                                                                                                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                                                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                                                                                                                                                                                                                                                                                              :> (ZLocalUser
                                                                                                                                                                                                                                                                                                                                                                                                                                                  :> (ZConn
                                                                                                                                                                                                                                                                                                                                                                                                                                                      :> ("conversations"
                                                                                                                                                                                                                                                                                                                                                                                                                                                          :> (QualifiedCapture'
                                                                                                                                                                                                                                                                                                                                                                                                                                                                '[Description
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    "Conversation ID"]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                "cnv"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                ConvId
                                                                                                                                                                                                                                                                                                                                                                                                                                                              :> ("protocol"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ProtocolUpdate
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      :> MultiVerb
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           'PUT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ConvUpdateResponses
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Event))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
   :<|> (TeamConversationAPI
         :<|> ((Named
                  "post-otr-message-unqualified"
                  (Summary
                     "Post an encrypted message to a conversation (accepts JSON or Protobuf)"
                   :> (Description PostOtrDescriptionUnqualified
                       :> (MakesFederatedCall 'Galley "on-message-sent"
                           :> (MakesFederatedCall 'Brig "get-user-clients"
                               :> (ZLocalUser
                                   :> (ZConn
                                       :> ("conversations"
                                           :> (Capture "cnv" ConvId
                                               :> ("otr"
                                                   :> ("messages"
                                                       :> (QueryParam "ignore_missing" IgnoreMissing
                                                           :> (QueryParam
                                                                 "report_missing" ReportMissing
                                                               :> (ReqBody
                                                                     '[JSON, Proto] NewOtrMessage
                                                                   :> MultiVerb
                                                                        'POST
                                                                        '[JSON]
                                                                        '[ErrorResponse
                                                                            'ConvNotFound,
                                                                          ErrorResponse
                                                                            'UnknownClient,
                                                                          ErrorResponse
                                                                            'MissingLegalholdConsentOldClients,
                                                                          ErrorResponse
                                                                            'MissingLegalholdConsent,
                                                                          Respond
                                                                            412
                                                                            "Missing clients"
                                                                            ClientMismatch,
                                                                          Respond
                                                                            201
                                                                            "Message sent"
                                                                            ClientMismatch]
                                                                        (PostOtrResponse
                                                                           ClientMismatch))))))))))))))
                :<|> (Named
                        "post-otr-broadcast-unqualified"
                        (Summary
                           "Broadcast an encrypted message to all team members and all contacts (accepts JSON or Protobuf)"
                         :> (Description PostOtrDescriptionUnqualified
                             :> (ZLocalUser
                                 :> (ZConn
                                     :> (CanThrow 'TeamNotFound
                                         :> (CanThrow 'BroadcastLimitExceeded
                                             :> (CanThrow 'NonBindingTeam
                                                 :> ("broadcast"
                                                     :> ("otr"
                                                         :> ("messages"
                                                             :> (QueryParam
                                                                   "ignore_missing" IgnoreMissing
                                                                 :> (QueryParam
                                                                       "report_missing"
                                                                       ReportMissing
                                                                     :> (ReqBody
                                                                           '[JSON, Proto]
                                                                           NewOtrMessage
                                                                         :> MultiVerb
                                                                              'POST
                                                                              '[JSON]
                                                                              '[ErrorResponse
                                                                                  'ConvNotFound,
                                                                                ErrorResponse
                                                                                  'UnknownClient,
                                                                                ErrorResponse
                                                                                  'MissingLegalholdConsentOldClients,
                                                                                ErrorResponse
                                                                                  'MissingLegalholdConsent,
                                                                                Respond
                                                                                  412
                                                                                  "Missing clients"
                                                                                  ClientMismatch,
                                                                                Respond
                                                                                  201
                                                                                  "Message sent"
                                                                                  ClientMismatch]
                                                                              (PostOtrResponse
                                                                                 ClientMismatch))))))))))))))
                      :<|> (Named
                              "post-proteus-message"
                              (Summary
                                 "Post an encrypted message to a conversation (accepts only Protobuf)"
                               :> (Description PostOtrDescription
                                   :> (MakesFederatedCall 'Brig "get-user-clients"
                                       :> (MakesFederatedCall 'Galley "on-message-sent"
                                           :> (MakesFederatedCall 'Galley "send-message"
                                               :> (ZLocalUser
                                                   :> (ZConn
                                                       :> ("conversations"
                                                           :> (QualifiedCapture "cnv" ConvId
                                                               :> ("proteus"
                                                                   :> ("messages"
                                                                       :> (ReqBody
                                                                             '[Proto]
                                                                             (RawProto
                                                                                QualifiedNewOtrMessage)
                                                                           :> MultiVerb
                                                                                'POST
                                                                                '[JSON]
                                                                                '[ErrorResponse
                                                                                    'ConvNotFound,
                                                                                  ErrorResponse
                                                                                    'UnknownClient,
                                                                                  ErrorResponse
                                                                                    'MissingLegalholdConsentOldClients,
                                                                                  ErrorResponse
                                                                                    'MissingLegalholdConsent,
                                                                                  Respond
                                                                                    412
                                                                                    "Missing clients"
                                                                                    MessageSendingStatus,
                                                                                  Respond
                                                                                    201
                                                                                    "Message sent"
                                                                                    MessageSendingStatus]
                                                                                (Either
                                                                                   (MessageNotSent
                                                                                      MessageSendingStatus)
                                                                                   MessageSendingStatus)))))))))))))
                            :<|> Named
                                   "post-proteus-broadcast"
                                   (Summary
                                      "Post an encrypted message to all team members and all contacts (accepts only Protobuf)"
                                    :> (Description PostOtrDescription
                                        :> (ZLocalUser
                                            :> (ZConn
                                                :> (CanThrow 'TeamNotFound
                                                    :> (CanThrow 'BroadcastLimitExceeded
                                                        :> (CanThrow 'NonBindingTeam
                                                            :> ("broadcast"
                                                                :> ("proteus"
                                                                    :> ("messages"
                                                                        :> (ReqBody
                                                                              '[Proto]
                                                                              QualifiedNewOtrMessage
                                                                            :> MultiVerb
                                                                                 'POST
                                                                                 '[JSON]
                                                                                 '[ErrorResponse
                                                                                     'ConvNotFound,
                                                                                   ErrorResponse
                                                                                     'UnknownClient,
                                                                                   ErrorResponse
                                                                                     'MissingLegalholdConsentOldClients,
                                                                                   ErrorResponse
                                                                                     'MissingLegalholdConsent,
                                                                                   Respond
                                                                                     412
                                                                                     "Missing clients"
                                                                                     MessageSendingStatus,
                                                                                   Respond
                                                                                     201
                                                                                     "Message sent"
                                                                                     MessageSendingStatus]
                                                                                 (Either
                                                                                    (MessageNotSent
                                                                                       MessageSendingStatus)
                                                                                    MessageSendingStatus)))))))))))))))
               :<|> ((Named
                        "post-bot-message-unqualified"
                        (MakesFederatedCall 'Galley "on-message-sent"
                         :> (MakesFederatedCall 'Brig "get-user-clients"
                             :> (ZBot
                                 :> (ZConversation
                                     :> (CanThrow 'ConvNotFound
                                         :> ("bot"
                                             :> ("messages"
                                                 :> (QueryParam "ignore_missing" IgnoreMissing
                                                     :> (QueryParam "report_missing" ReportMissing
                                                         :> (ReqBody '[JSON] NewOtrMessage
                                                             :> MultiVerb
                                                                  'POST
                                                                  '[JSON]
                                                                  '[ErrorResponse 'ConvNotFound,
                                                                    ErrorResponse 'UnknownClient,
                                                                    ErrorResponse
                                                                      'MissingLegalholdConsentOldClients,
                                                                    ErrorResponse
                                                                      'MissingLegalholdConsent,
                                                                    Respond
                                                                      412
                                                                      "Missing clients"
                                                                      ClientMismatch,
                                                                    Respond
                                                                      201
                                                                      "Message sent"
                                                                      ClientMismatch]
                                                                  (PostOtrResponse
                                                                     ClientMismatch)))))))))))
                      :<|> Named
                             "get-bot-conversation"
                             (CanThrow 'AccessDenied
                              :> (CanThrow 'ConvNotFound
                                  :> (CanThrow OperationDenied
                                      :> (CanThrow 'NotATeamMember
                                          :> (CanThrow 'TeamNotFound
                                              :> ("bot"
                                                  :> ("conversation"
                                                      :> (ZBot
                                                          :> (ZConversation
                                                              :> Get '[JSON] BotConvView))))))))))
                     :<|> (TeamAPI
                           :<|> ((Named
                                    '("get", SSOConfig)
                                    (Description ""
                                     :> (ZUser
                                         :> (Summary "Get config for sso"
                                             :> (CanThrow OperationDenied
                                                 :> (CanThrow 'NotATeamMember
                                                     :> (CanThrow 'TeamNotFound
                                                         :> ("teams"
                                                             :> (Capture "tid" TeamId
                                                                 :> ("features"
                                                                     :> ("sso"
                                                                         :> Get
                                                                              '[JSON]
                                                                              (LockableFeature
                                                                                 SSOConfig)))))))))))
                                  :<|> ((Named
                                           '("get", LegalholdConfig)
                                           (Description ""
                                            :> (ZUser
                                                :> (Summary "Get config for legalhold"
                                                    :> (CanThrow OperationDenied
                                                        :> (CanThrow 'NotATeamMember
                                                            :> (CanThrow 'TeamNotFound
                                                                :> ("teams"
                                                                    :> (Capture "tid" TeamId
                                                                        :> ("features"
                                                                            :> ("legalhold"
                                                                                :> Get
                                                                                     '[JSON]
                                                                                     (LockableFeature
                                                                                        LegalholdConfig)))))))))))
                                         :<|> Named
                                                '("put", LegalholdConfig)
                                                (Description ""
                                                 :> (ZUser
                                                     :> (Summary "Put config for legalhold"
                                                         :> (CanThrow OperationDenied
                                                             :> (CanThrow 'NotATeamMember
                                                                 :> (CanThrow 'TeamNotFound
                                                                     :> (CanThrow TeamFeatureError
                                                                         :> (CanThrowMany
                                                                               '[ 'ActionDenied
                                                                                    'RemoveConversationMember,
                                                                                  'CannotEnableLegalHoldServiceLargeTeam,
                                                                                  'LegalHoldNotEnabled,
                                                                                  'LegalHoldDisableUnimplemented,
                                                                                  'LegalHoldServiceNotRegistered,
                                                                                  'UserLegalHoldIllegalOperation,
                                                                                  'LegalHoldCouldNotBlockConnections]
                                                                             :> ("teams"
                                                                                 :> (Capture
                                                                                       "tid" TeamId
                                                                                     :> ("features"
                                                                                         :> ("legalhold"
                                                                                             :> (ReqBody
                                                                                                   '[JSON]
                                                                                                   (Feature
                                                                                                      LegalholdConfig)
                                                                                                 :> Put
                                                                                                      '[JSON]
                                                                                                      (LockableFeature
                                                                                                         LegalholdConfig)))))))))))))))
                                        :<|> ((Named
                                                 '("get", SearchVisibilityAvailableConfig)
                                                 (Description ""
                                                  :> (ZUser
                                                      :> (Summary "Get config for searchVisibility"
                                                          :> (CanThrow OperationDenied
                                                              :> (CanThrow 'NotATeamMember
                                                                  :> (CanThrow 'TeamNotFound
                                                                      :> ("teams"
                                                                          :> (Capture "tid" TeamId
                                                                              :> ("features"
                                                                                  :> ("searchVisibility"
                                                                                      :> Get
                                                                                           '[JSON]
                                                                                           (LockableFeature
                                                                                              SearchVisibilityAvailableConfig)))))))))))
                                               :<|> Named
                                                      '("put", SearchVisibilityAvailableConfig)
                                                      (Description ""
                                                       :> (ZUser
                                                           :> (Summary
                                                                 "Put config for searchVisibility"
                                                               :> (CanThrow OperationDenied
                                                                   :> (CanThrow 'NotATeamMember
                                                                       :> (CanThrow 'TeamNotFound
                                                                           :> (CanThrow
                                                                                 TeamFeatureError
                                                                               :> (CanThrowMany '[]
                                                                                   :> ("teams"
                                                                                       :> (Capture
                                                                                             "tid"
                                                                                             TeamId
                                                                                           :> ("features"
                                                                                               :> ("searchVisibility"
                                                                                                   :> (ReqBody
                                                                                                         '[JSON]
                                                                                                         (Feature
                                                                                                            SearchVisibilityAvailableConfig)
                                                                                                       :> Put
                                                                                                            '[JSON]
                                                                                                            (LockableFeature
                                                                                                               SearchVisibilityAvailableConfig)))))))))))))))
                                              :<|> (SearchVisibilityGet
                                                    :<|> (SearchVisibilitySet
                                                          :<|> (Named
                                                                  '("get", ValidateSAMLEmailsConfig)
                                                                  (Description ""
                                                                   :> (ZUser
                                                                       :> (Summary
                                                                             "Get config for validateSAMLemails"
                                                                           :> (CanThrow
                                                                                 OperationDenied
                                                                               :> (CanThrow
                                                                                     'NotATeamMember
                                                                                   :> (CanThrow
                                                                                         'TeamNotFound
                                                                                       :> ("teams"
                                                                                           :> (Capture
                                                                                                 "tid"
                                                                                                 TeamId
                                                                                               :> ("features"
                                                                                                   :> ("validateSAMLemails"
                                                                                                       :> Get
                                                                                                            '[JSON]
                                                                                                            (LockableFeature
                                                                                                               ValidateSAMLEmailsConfig)))))))))))
                                                                :<|> (Named
                                                                        '("get",
                                                                          DigitalSignaturesConfig)
                                                                        (Description ""
                                                                         :> (ZUser
                                                                             :> (Summary
                                                                                   "Get config for digitalSignatures"
                                                                                 :> (CanThrow
                                                                                       OperationDenied
                                                                                     :> (CanThrow
                                                                                           'NotATeamMember
                                                                                         :> (CanThrow
                                                                                               'TeamNotFound
                                                                                             :> ("teams"
                                                                                                 :> (Capture
                                                                                                       "tid"
                                                                                                       TeamId
                                                                                                     :> ("features"
                                                                                                         :> ("digitalSignatures"
                                                                                                             :> Get
                                                                                                                  '[JSON]
                                                                                                                  (LockableFeature
                                                                                                                     DigitalSignaturesConfig)))))))))))
                                                                      :<|> ((Named
                                                                               '("get",
                                                                                 AppLockConfig)
                                                                               (Description ""
                                                                                :> (ZUser
                                                                                    :> (Summary
                                                                                          "Get config for appLock"
                                                                                        :> (CanThrow
                                                                                              OperationDenied
                                                                                            :> (CanThrow
                                                                                                  'NotATeamMember
                                                                                                :> (CanThrow
                                                                                                      'TeamNotFound
                                                                                                    :> ("teams"
                                                                                                        :> (Capture
                                                                                                              "tid"
                                                                                                              TeamId
                                                                                                            :> ("features"
                                                                                                                :> ("appLock"
                                                                                                                    :> Get
                                                                                                                         '[JSON]
                                                                                                                         (LockableFeature
                                                                                                                            AppLockConfig)))))))))))
                                                                             :<|> Named
                                                                                    '("put",
                                                                                      AppLockConfig)
                                                                                    (Description ""
                                                                                     :> (ZUser
                                                                                         :> (Summary
                                                                                               "Put config for appLock"
                                                                                             :> (CanThrow
                                                                                                   OperationDenied
                                                                                                 :> (CanThrow
                                                                                                       'NotATeamMember
                                                                                                     :> (CanThrow
                                                                                                           'TeamNotFound
                                                                                                         :> (CanThrow
                                                                                                               TeamFeatureError
                                                                                                             :> (CanThrowMany
                                                                                                                   '[]
                                                                                                                 :> ("teams"
                                                                                                                     :> (Capture
                                                                                                                           "tid"
                                                                                                                           TeamId
                                                                                                                         :> ("features"
                                                                                                                             :> ("appLock"
                                                                                                                                 :> (ReqBody
                                                                                                                                       '[JSON]
                                                                                                                                       (Feature
                                                                                                                                          AppLockConfig)
                                                                                                                                     :> Put
                                                                                                                                          '[JSON]
                                                                                                                                          (LockableFeature
                                                                                                                                             AppLockConfig)))))))))))))))
                                                                            :<|> ((Named
                                                                                     '("get",
                                                                                       FileSharingConfig)
                                                                                     (Description ""
                                                                                      :> (ZUser
                                                                                          :> (Summary
                                                                                                "Get config for fileSharing"
                                                                                              :> (CanThrow
                                                                                                    OperationDenied
                                                                                                  :> (CanThrow
                                                                                                        'NotATeamMember
                                                                                                      :> (CanThrow
                                                                                                            'TeamNotFound
                                                                                                          :> ("teams"
                                                                                                              :> (Capture
                                                                                                                    "tid"
                                                                                                                    TeamId
                                                                                                                  :> ("features"
                                                                                                                      :> ("fileSharing"
                                                                                                                          :> Get
                                                                                                                               '[JSON]
                                                                                                                               (LockableFeature
                                                                                                                                  FileSharingConfig)))))))))))
                                                                                   :<|> Named
                                                                                          '("put",
                                                                                            FileSharingConfig)
                                                                                          (Description
                                                                                             ""
                                                                                           :> (ZUser
                                                                                               :> (Summary
                                                                                                     "Put config for fileSharing"
                                                                                                   :> (CanThrow
                                                                                                         OperationDenied
                                                                                                       :> (CanThrow
                                                                                                             'NotATeamMember
                                                                                                           :> (CanThrow
                                                                                                                 'TeamNotFound
                                                                                                               :> (CanThrow
                                                                                                                     TeamFeatureError
                                                                                                                   :> (CanThrowMany
                                                                                                                         '[]
                                                                                                                       :> ("teams"
                                                                                                                           :> (Capture
                                                                                                                                 "tid"
                                                                                                                                 TeamId
                                                                                                                               :> ("features"
                                                                                                                                   :> ("fileSharing"
                                                                                                                                       :> (ReqBody
                                                                                                                                             '[JSON]
                                                                                                                                             (Feature
                                                                                                                                                FileSharingConfig)
                                                                                                                                           :> Put
                                                                                                                                                '[JSON]
                                                                                                                                                (LockableFeature
                                                                                                                                                   FileSharingConfig)))))))))))))))
                                                                                  :<|> (Named
                                                                                          '("get",
                                                                                            ClassifiedDomainsConfig)
                                                                                          (Description
                                                                                             ""
                                                                                           :> (ZUser
                                                                                               :> (Summary
                                                                                                     "Get config for classifiedDomains"
                                                                                                   :> (CanThrow
                                                                                                         OperationDenied
                                                                                                       :> (CanThrow
                                                                                                             'NotATeamMember
                                                                                                           :> (CanThrow
                                                                                                                 'TeamNotFound
                                                                                                               :> ("teams"
                                                                                                                   :> (Capture
                                                                                                                         "tid"
                                                                                                                         TeamId
                                                                                                                       :> ("features"
                                                                                                                           :> ("classifiedDomains"
                                                                                                                               :> Get
                                                                                                                                    '[JSON]
                                                                                                                                    (LockableFeature
                                                                                                                                       ClassifiedDomainsConfig)))))))))))
                                                                                        :<|> ((Named
                                                                                                 '("get",
                                                                                                   ConferenceCallingConfig)
                                                                                                 (Description
                                                                                                    ""
                                                                                                  :> (ZUser
                                                                                                      :> (Summary
                                                                                                            "Get config for conferenceCalling"
                                                                                                          :> (CanThrow
                                                                                                                OperationDenied
                                                                                                              :> (CanThrow
                                                                                                                    'NotATeamMember
                                                                                                                  :> (CanThrow
                                                                                                                        'TeamNotFound
                                                                                                                      :> ("teams"
                                                                                                                          :> (Capture
                                                                                                                                "tid"
                                                                                                                                TeamId
                                                                                                                              :> ("features"
                                                                                                                                  :> ("conferenceCalling"
                                                                                                                                      :> Get
                                                                                                                                           '[JSON]
                                                                                                                                           (LockableFeature
                                                                                                                                              ConferenceCallingConfig)))))))))))
                                                                                               :<|> Named
                                                                                                      '("put",
                                                                                                        ConferenceCallingConfig)
                                                                                                      (Description
                                                                                                         ""
                                                                                                       :> (ZUser
                                                                                                           :> (Summary
                                                                                                                 "Put config for conferenceCalling"
                                                                                                               :> (CanThrow
                                                                                                                     OperationDenied
                                                                                                                   :> (CanThrow
                                                                                                                         'NotATeamMember
                                                                                                                       :> (CanThrow
                                                                                                                             'TeamNotFound
                                                                                                                           :> (CanThrow
                                                                                                                                 TeamFeatureError
                                                                                                                               :> (CanThrowMany
                                                                                                                                     '[]
                                                                                                                                   :> ("teams"
                                                                                                                                       :> (Capture
                                                                                                                                             "tid"
                                                                                                                                             TeamId
                                                                                                                                           :> ("features"
                                                                                                                                               :> ("conferenceCalling"
                                                                                                                                                   :> (ReqBody
                                                                                                                                                         '[JSON]
                                                                                                                                                         (Feature
                                                                                                                                                            ConferenceCallingConfig)
                                                                                                                                                       :> Put
                                                                                                                                                            '[JSON]
                                                                                                                                                            (LockableFeature
                                                                                                                                                               ConferenceCallingConfig)))))))))))))))
                                                                                              :<|> ((Named
                                                                                                       '("get",
                                                                                                         SelfDeletingMessagesConfig)
                                                                                                       (Description
                                                                                                          ""
                                                                                                        :> (ZUser
                                                                                                            :> (Summary
                                                                                                                  "Get config for selfDeletingMessages"
                                                                                                                :> (CanThrow
                                                                                                                      OperationDenied
                                                                                                                    :> (CanThrow
                                                                                                                          'NotATeamMember
                                                                                                                        :> (CanThrow
                                                                                                                              'TeamNotFound
                                                                                                                            :> ("teams"
                                                                                                                                :> (Capture
                                                                                                                                      "tid"
                                                                                                                                      TeamId
                                                                                                                                    :> ("features"
                                                                                                                                        :> ("selfDeletingMessages"
                                                                                                                                            :> Get
                                                                                                                                                 '[JSON]
                                                                                                                                                 (LockableFeature
                                                                                                                                                    SelfDeletingMessagesConfig)))))))))))
                                                                                                     :<|> Named
                                                                                                            '("put",
                                                                                                              SelfDeletingMessagesConfig)
                                                                                                            (Description
                                                                                                               ""
                                                                                                             :> (ZUser
                                                                                                                 :> (Summary
                                                                                                                       "Put config for selfDeletingMessages"
                                                                                                                     :> (CanThrow
                                                                                                                           OperationDenied
                                                                                                                         :> (CanThrow
                                                                                                                               'NotATeamMember
                                                                                                                             :> (CanThrow
                                                                                                                                   'TeamNotFound
                                                                                                                                 :> (CanThrow
                                                                                                                                       TeamFeatureError
                                                                                                                                     :> (CanThrowMany
                                                                                                                                           '[]
                                                                                                                                         :> ("teams"
                                                                                                                                             :> (Capture
                                                                                                                                                   "tid"
                                                                                                                                                   TeamId
                                                                                                                                                 :> ("features"
                                                                                                                                                     :> ("selfDeletingMessages"
                                                                                                                                                         :> (ReqBody
                                                                                                                                                               '[JSON]
                                                                                                                                                               (Feature
                                                                                                                                                                  SelfDeletingMessagesConfig)
                                                                                                                                                             :> Put
                                                                                                                                                                  '[JSON]
                                                                                                                                                                  (LockableFeature
                                                                                                                                                                     SelfDeletingMessagesConfig)))))))))))))))
                                                                                                    :<|> ((Named
                                                                                                             '("get",
                                                                                                               GuestLinksConfig)
                                                                                                             (Description
                                                                                                                ""
                                                                                                              :> (ZUser
                                                                                                                  :> (Summary
                                                                                                                        "Get config for conversationGuestLinks"
                                                                                                                      :> (CanThrow
                                                                                                                            OperationDenied
                                                                                                                          :> (CanThrow
                                                                                                                                'NotATeamMember
                                                                                                                              :> (CanThrow
                                                                                                                                    'TeamNotFound
                                                                                                                                  :> ("teams"
                                                                                                                                      :> (Capture
                                                                                                                                            "tid"
                                                                                                                                            TeamId
                                                                                                                                          :> ("features"
                                                                                                                                              :> ("conversationGuestLinks"
                                                                                                                                                  :> Get
                                                                                                                                                       '[JSON]
                                                                                                                                                       (LockableFeature
                                                                                                                                                          GuestLinksConfig)))))))))))
                                                                                                           :<|> Named
                                                                                                                  '("put",
                                                                                                                    GuestLinksConfig)
                                                                                                                  (Description
                                                                                                                     ""
                                                                                                                   :> (ZUser
                                                                                                                       :> (Summary
                                                                                                                             "Put config for conversationGuestLinks"
                                                                                                                           :> (CanThrow
                                                                                                                                 OperationDenied
                                                                                                                               :> (CanThrow
                                                                                                                                     'NotATeamMember
                                                                                                                                   :> (CanThrow
                                                                                                                                         'TeamNotFound
                                                                                                                                       :> (CanThrow
                                                                                                                                             TeamFeatureError
                                                                                                                                           :> (CanThrowMany
                                                                                                                                                 '[]
                                                                                                                                               :> ("teams"
                                                                                                                                                   :> (Capture
                                                                                                                                                         "tid"
                                                                                                                                                         TeamId
                                                                                                                                                       :> ("features"
                                                                                                                                                           :> ("conversationGuestLinks"
                                                                                                                                                               :> (ReqBody
                                                                                                                                                                     '[JSON]
                                                                                                                                                                     (Feature
                                                                                                                                                                        GuestLinksConfig)
                                                                                                                                                                   :> Put
                                                                                                                                                                        '[JSON]
                                                                                                                                                                        (LockableFeature
                                                                                                                                                                           GuestLinksConfig)))))))))))))))
                                                                                                          :<|> ((Named
                                                                                                                   '("get",
                                                                                                                     SndFactorPasswordChallengeConfig)
                                                                                                                   (Description
                                                                                                                      ""
                                                                                                                    :> (ZUser
                                                                                                                        :> (Summary
                                                                                                                              "Get config for sndFactorPasswordChallenge"
                                                                                                                            :> (CanThrow
                                                                                                                                  OperationDenied
                                                                                                                                :> (CanThrow
                                                                                                                                      'NotATeamMember
                                                                                                                                    :> (CanThrow
                                                                                                                                          'TeamNotFound
                                                                                                                                        :> ("teams"
                                                                                                                                            :> (Capture
                                                                                                                                                  "tid"
                                                                                                                                                  TeamId
                                                                                                                                                :> ("features"
                                                                                                                                                    :> ("sndFactorPasswordChallenge"
                                                                                                                                                        :> Get
                                                                                                                                                             '[JSON]
                                                                                                                                                             (LockableFeature
                                                                                                                                                                SndFactorPasswordChallengeConfig)))))))))))
                                                                                                                 :<|> Named
                                                                                                                        '("put",
                                                                                                                          SndFactorPasswordChallengeConfig)
                                                                                                                        (Description
                                                                                                                           ""
                                                                                                                         :> (ZUser
                                                                                                                             :> (Summary
                                                                                                                                   "Put config for sndFactorPasswordChallenge"
                                                                                                                                 :> (CanThrow
                                                                                                                                       OperationDenied
                                                                                                                                     :> (CanThrow
                                                                                                                                           'NotATeamMember
                                                                                                                                         :> (CanThrow
                                                                                                                                               'TeamNotFound
                                                                                                                                             :> (CanThrow
                                                                                                                                                   TeamFeatureError
                                                                                                                                                 :> (CanThrowMany
                                                                                                                                                       '[]
                                                                                                                                                     :> ("teams"
                                                                                                                                                         :> (Capture
                                                                                                                                                               "tid"
                                                                                                                                                               TeamId
                                                                                                                                                             :> ("features"
                                                                                                                                                                 :> ("sndFactorPasswordChallenge"
                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                           '[JSON]
                                                                                                                                                                           (Feature
                                                                                                                                                                              SndFactorPasswordChallengeConfig)
                                                                                                                                                                         :> Put
                                                                                                                                                                              '[JSON]
                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                 SndFactorPasswordChallengeConfig)))))))))))))))
                                                                                                                :<|> ((Named
                                                                                                                         '("get",
                                                                                                                           MLSConfig)
                                                                                                                         (From
                                                                                                                            'V5
                                                                                                                          :> (Description
                                                                                                                                ""
                                                                                                                              :> (ZUser
                                                                                                                                  :> (Summary
                                                                                                                                        "Get config for mls"
                                                                                                                                      :> (CanThrow
                                                                                                                                            OperationDenied
                                                                                                                                          :> (CanThrow
                                                                                                                                                'NotATeamMember
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'TeamNotFound
                                                                                                                                                  :> ("teams"
                                                                                                                                                      :> (Capture
                                                                                                                                                            "tid"
                                                                                                                                                            TeamId
                                                                                                                                                          :> ("features"
                                                                                                                                                              :> ("mls"
                                                                                                                                                                  :> Get
                                                                                                                                                                       '[JSON]
                                                                                                                                                                       (LockableFeature
                                                                                                                                                                          MLSConfig))))))))))))
                                                                                                                       :<|> Named
                                                                                                                              '("put",
                                                                                                                                MLSConfig)
                                                                                                                              (From
                                                                                                                                 'V5
                                                                                                                               :> (Description
                                                                                                                                     ""
                                                                                                                                   :> (ZUser
                                                                                                                                       :> (Summary
                                                                                                                                             "Put config for mls"
                                                                                                                                           :> (CanThrow
                                                                                                                                                 OperationDenied
                                                                                                                                               :> (CanThrow
                                                                                                                                                     'NotATeamMember
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'TeamNotFound
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             TeamFeatureError
                                                                                                                                                           :> (CanThrowMany
                                                                                                                                                                 '[]
                                                                                                                                                               :> ("teams"
                                                                                                                                                                   :> (Capture
                                                                                                                                                                         "tid"
                                                                                                                                                                         TeamId
                                                                                                                                                                       :> ("features"
                                                                                                                                                                           :> ("mls"
                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                     (Feature
                                                                                                                                                                                        MLSConfig)
                                                                                                                                                                                   :> Put
                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                           MLSConfig))))))))))))))))
                                                                                                                      :<|> ((Named
                                                                                                                               '("get",
                                                                                                                                 ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                               (Description
                                                                                                                                  ""
                                                                                                                                :> (ZUser
                                                                                                                                    :> (Summary
                                                                                                                                          "Get config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                        :> (CanThrow
                                                                                                                                              OperationDenied
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'NotATeamMember
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'TeamNotFound
                                                                                                                                                    :> ("teams"
                                                                                                                                                        :> (Capture
                                                                                                                                                              "tid"
                                                                                                                                                              TeamId
                                                                                                                                                            :> ("features"
                                                                                                                                                                :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                    :> Get
                                                                                                                                                                         '[JSON]
                                                                                                                                                                         (LockableFeature
                                                                                                                                                                            ExposeInvitationURLsToTeamAdminConfig)))))))))))
                                                                                                                             :<|> Named
                                                                                                                                    '("put",
                                                                                                                                      ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                    (Description
                                                                                                                                       ""
                                                                                                                                     :> (ZUser
                                                                                                                                         :> (Summary
                                                                                                                                               "Put config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                             :> (CanThrow
                                                                                                                                                   OperationDenied
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'NotATeamMember
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'TeamNotFound
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               TeamFeatureError
                                                                                                                                                             :> (CanThrowMany
                                                                                                                                                                   '[]
                                                                                                                                                                 :> ("teams"
                                                                                                                                                                     :> (Capture
                                                                                                                                                                           "tid"
                                                                                                                                                                           TeamId
                                                                                                                                                                         :> ("features"
                                                                                                                                                                             :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                       (Feature
                                                                                                                                                                                          ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                     :> Put
                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                             ExposeInvitationURLsToTeamAdminConfig)))))))))))))))
                                                                                                                            :<|> ((Named
                                                                                                                                     '("get",
                                                                                                                                       SearchVisibilityInboundConfig)
                                                                                                                                     (Description
                                                                                                                                        ""
                                                                                                                                      :> (ZUser
                                                                                                                                          :> (Summary
                                                                                                                                                "Get config for searchVisibilityInbound"
                                                                                                                                              :> (CanThrow
                                                                                                                                                    OperationDenied
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'NotATeamMember
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'TeamNotFound
                                                                                                                                                          :> ("teams"
                                                                                                                                                              :> (Capture
                                                                                                                                                                    "tid"
                                                                                                                                                                    TeamId
                                                                                                                                                                  :> ("features"
                                                                                                                                                                      :> ("searchVisibilityInbound"
                                                                                                                                                                          :> Get
                                                                                                                                                                               '[JSON]
                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                  SearchVisibilityInboundConfig)))))))))))
                                                                                                                                   :<|> Named
                                                                                                                                          '("put",
                                                                                                                                            SearchVisibilityInboundConfig)
                                                                                                                                          (Description
                                                                                                                                             ""
                                                                                                                                           :> (ZUser
                                                                                                                                               :> (Summary
                                                                                                                                                     "Put config for searchVisibilityInbound"
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         OperationDenied
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'NotATeamMember
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 'TeamNotFound
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     TeamFeatureError
                                                                                                                                                                   :> (CanThrowMany
                                                                                                                                                                         '[]
                                                                                                                                                                       :> ("teams"
                                                                                                                                                                           :> (Capture
                                                                                                                                                                                 "tid"
                                                                                                                                                                                 TeamId
                                                                                                                                                                               :> ("features"
                                                                                                                                                                                   :> ("searchVisibilityInbound"
                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                             (Feature
                                                                                                                                                                                                SearchVisibilityInboundConfig)
                                                                                                                                                                                           :> Put
                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                   SearchVisibilityInboundConfig)))))))))))))))
                                                                                                                                  :<|> ((Named
                                                                                                                                           '("get",
                                                                                                                                             OutlookCalIntegrationConfig)
                                                                                                                                           (Description
                                                                                                                                              ""
                                                                                                                                            :> (ZUser
                                                                                                                                                :> (Summary
                                                                                                                                                      "Get config for outlookCalIntegration"
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          OperationDenied
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'NotATeamMember
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                :> ("teams"
                                                                                                                                                                    :> (Capture
                                                                                                                                                                          "tid"
                                                                                                                                                                          TeamId
                                                                                                                                                                        :> ("features"
                                                                                                                                                                            :> ("outlookCalIntegration"
                                                                                                                                                                                :> Get
                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                        OutlookCalIntegrationConfig)))))))))))
                                                                                                                                         :<|> Named
                                                                                                                                                '("put",
                                                                                                                                                  OutlookCalIntegrationConfig)
                                                                                                                                                (Description
                                                                                                                                                   ""
                                                                                                                                                 :> (ZUser
                                                                                                                                                     :> (Summary
                                                                                                                                                           "Put config for outlookCalIntegration"
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               OperationDenied
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           TeamFeatureError
                                                                                                                                                                         :> (CanThrowMany
                                                                                                                                                                               '[]
                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                       "tid"
                                                                                                                                                                                       TeamId
                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                         :> ("outlookCalIntegration"
                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                   (Feature
                                                                                                                                                                                                      OutlookCalIntegrationConfig)
                                                                                                                                                                                                 :> Put
                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                         OutlookCalIntegrationConfig)))))))))))))))
                                                                                                                                        :<|> (Named
                                                                                                                                                '("get",
                                                                                                                                                  MlsE2EIdConfig)
                                                                                                                                                (From
                                                                                                                                                   'V5
                                                                                                                                                 :> (Description
                                                                                                                                                       ""
                                                                                                                                                     :> (ZUser
                                                                                                                                                         :> (Summary
                                                                                                                                                               "Get config for mlsE2EId"
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   OperationDenied
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                         :> ("teams"
                                                                                                                                                                             :> (Capture
                                                                                                                                                                                   "tid"
                                                                                                                                                                                   TeamId
                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                     :> ("mlsE2EId"
                                                                                                                                                                                         :> Get
                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                 MlsE2EIdConfig))))))))))))
                                                                                                                                              :<|> (Named
                                                                                                                                                      "put-MlsE2EIdConfig@v5"
                                                                                                                                                      (From
                                                                                                                                                         'V5
                                                                                                                                                       :> (Until
                                                                                                                                                             'V6
                                                                                                                                                           :> (ZUser
                                                                                                                                                               :> (Summary
                                                                                                                                                                     "Put config for mlsE2EId"
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         OperationDenied
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     TeamFeatureError
                                                                                                                                                                                   :> (CanThrowMany
                                                                                                                                                                                         '[]
                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                 TeamId
                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                   :> ("mlsE2EId"
                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                             (Feature
                                                                                                                                                                                                                MlsE2EIdConfig)
                                                                                                                                                                                                           :> Put
                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                   MlsE2EIdConfig)))))))))))))))
                                                                                                                                                    :<|> (Named
                                                                                                                                                            '("put",
                                                                                                                                                              MlsE2EIdConfig)
                                                                                                                                                            (From
                                                                                                                                                               'V6
                                                                                                                                                             :> (Description
                                                                                                                                                                   ""
                                                                                                                                                                 :> (ZUser
                                                                                                                                                                     :> (Summary
                                                                                                                                                                           "Put config for mlsE2EId"
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               OperationDenied
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           TeamFeatureError
                                                                                                                                                                                         :> (CanThrowMany
                                                                                                                                                                                               '[]
                                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                       "tid"
                                                                                                                                                                                                       TeamId
                                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                                         :> ("mlsE2EId"
                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                   (Feature
                                                                                                                                                                                                                      MlsE2EIdConfig)
                                                                                                                                                                                                                 :> Put
                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                         MlsE2EIdConfig)))))))))))))))
                                                                                                                                                          :<|> ((Named
                                                                                                                                                                   '("get",
                                                                                                                                                                     MlsMigrationConfig)
                                                                                                                                                                   (From
                                                                                                                                                                      'V5
                                                                                                                                                                    :> (Description
                                                                                                                                                                          ""
                                                                                                                                                                        :> (ZUser
                                                                                                                                                                            :> (Summary
                                                                                                                                                                                  "Get config for mlsMigration"
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                      "tid"
                                                                                                                                                                                                      TeamId
                                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                                        :> ("mlsMigration"
                                                                                                                                                                                                            :> Get
                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                    MlsMigrationConfig))))))))))))
                                                                                                                                                                 :<|> Named
                                                                                                                                                                        '("put",
                                                                                                                                                                          MlsMigrationConfig)
                                                                                                                                                                        (From
                                                                                                                                                                           'V5
                                                                                                                                                                         :> (Description
                                                                                                                                                                               ""
                                                                                                                                                                             :> (ZUser
                                                                                                                                                                                 :> (Summary
                                                                                                                                                                                       "Put config for mlsMigration"
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           OperationDenied
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       TeamFeatureError
                                                                                                                                                                                                     :> (CanThrowMany
                                                                                                                                                                                                           '[]
                                                                                                                                                                                                         :> ("teams"
                                                                                                                                                                                                             :> (Capture
                                                                                                                                                                                                                   "tid"
                                                                                                                                                                                                                   TeamId
                                                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                                                     :> ("mlsMigration"
                                                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                               (Feature
                                                                                                                                                                                                                                  MlsMigrationConfig)
                                                                                                                                                                                                                             :> Put
                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                     MlsMigrationConfig))))))))))))))))
                                                                                                                                                                :<|> ((Named
                                                                                                                                                                         '("get",
                                                                                                                                                                           EnforceFileDownloadLocationConfig)
                                                                                                                                                                         (From
                                                                                                                                                                            'V5
                                                                                                                                                                          :> (Description
                                                                                                                                                                                "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                              :> (ZUser
                                                                                                                                                                                  :> (Summary
                                                                                                                                                                                        "Get config for enforceFileDownloadLocation"
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                  :> ("teams"
                                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                                            "tid"
                                                                                                                                                                                                            TeamId
                                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                                              :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                  :> Get
                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                          EnforceFileDownloadLocationConfig))))))))))))
                                                                                                                                                                       :<|> Named
                                                                                                                                                                              '("put",
                                                                                                                                                                                EnforceFileDownloadLocationConfig)
                                                                                                                                                                              (From
                                                                                                                                                                                 'V5
                                                                                                                                                                               :> (Description
                                                                                                                                                                                     "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                   :> (ZUser
                                                                                                                                                                                       :> (Summary
                                                                                                                                                                                             "Put config for enforceFileDownloadLocation"
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 OperationDenied
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                             TeamFeatureError
                                                                                                                                                                                                           :> (CanThrowMany
                                                                                                                                                                                                                 '[]
                                                                                                                                                                                                               :> ("teams"
                                                                                                                                                                                                                   :> (Capture
                                                                                                                                                                                                                         "tid"
                                                                                                                                                                                                                         TeamId
                                                                                                                                                                                                                       :> ("features"
                                                                                                                                                                                                                           :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                     (Feature
                                                                                                                                                                                                                                        EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                   :> Put
                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                                                           EnforceFileDownloadLocationConfig))))))))))))))))
                                                                                                                                                                      :<|> (Named
                                                                                                                                                                              '("get",
                                                                                                                                                                                LimitedEventFanoutConfig)
                                                                                                                                                                              (From
                                                                                                                                                                                 'V5
                                                                                                                                                                               :> (Description
                                                                                                                                                                                     ""
                                                                                                                                                                                   :> (ZUser
                                                                                                                                                                                       :> (Summary
                                                                                                                                                                                             "Get config for limitedEventFanout"
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 OperationDenied
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                                 TeamId
                                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                                   :> ("limitedEventFanout"
                                                                                                                                                                                                                       :> Get
                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                               LimitedEventFanoutConfig))))))))))))
                                                                                                                                                                            :<|> (AllTeamFeaturesUserGet
                                                                                                                                                                                  :<|> (AllTeamFeaturesTeamGet
                                                                                                                                                                                        :<|> ((Named
                                                                                                                                                                                                 '("get-deprecated",
                                                                                                                                                                                                   SearchVisibilityAvailableConfig)
                                                                                                                                                                                                 (ZUser
                                                                                                                                                                                                  :> (Summary
                                                                                                                                                                                                        "[deprecated] Get config for searchVisibility"
                                                                                                                                                                                                      :> (Until
                                                                                                                                                                                                            'V2
                                                                                                                                                                                                          :> (Description
                                                                                                                                                                                                                "Deprecated. Please use `GET /teams/:tid/features/searchVisibility` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                        OperationDenied
                                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                                                      :> ("search-visibility"
                                                                                                                                                                                                                                          :> Get
                                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                                  SearchVisibilityAvailableConfig))))))))))))
                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                       '("put-deprecated",
                                                                                                                                                                                                         SearchVisibilityAvailableConfig)
                                                                                                                                                                                                       (ZUser
                                                                                                                                                                                                        :> (Summary
                                                                                                                                                                                                              "[deprecated] Get config for searchVisibility"
                                                                                                                                                                                                            :> (Until
                                                                                                                                                                                                                  'V2
                                                                                                                                                                                                                :> (Description
                                                                                                                                                                                                                      "Deprecated. Please use `PUT /teams/:tid/features/searchVisibility` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                                              OperationDenied
                                                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                                                      TeamFeatureError
                                                                                                                                                                                                                                    :> ("teams"
                                                                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                                                                              "tid"
                                                                                                                                                                                                                                              TeamId
                                                                                                                                                                                                                                            :> ("features"
                                                                                                                                                                                                                                                :> ("search-visibility"
                                                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                          (Feature
                                                                                                                                                                                                                                                             SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                                                        :> Put
                                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                                                SearchVisibilityAvailableConfig))))))))))))))
                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                             '("get-deprecated",
                                                                                                                                                                                                               ValidateSAMLEmailsConfig)
                                                                                                                                                                                                             (ZUser
                                                                                                                                                                                                              :> (Summary
                                                                                                                                                                                                                    "[deprecated] Get config for validateSAMLemails"
                                                                                                                                                                                                                  :> (Until
                                                                                                                                                                                                                        'V2
                                                                                                                                                                                                                      :> (Description
                                                                                                                                                                                                                            "Deprecated. Please use `GET /teams/:tid/features/validateSAMLemails` instead.\nThis endpoint is potentially used by the old Android client. It is not used by iOS, team management, or webapp as of June 2022"
                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                                                      :> ("teams"
                                                                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                                                                "tid"
                                                                                                                                                                                                                                                TeamId
                                                                                                                                                                                                                                              :> ("features"
                                                                                                                                                                                                                                                  :> ("validate-saml-emails"
                                                                                                                                                                                                                                                      :> Get
                                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                                                              ValidateSAMLEmailsConfig))))))))))))
                                                                                                                                                                                                           :<|> Named
                                                                                                                                                                                                                  '("get-deprecated",
                                                                                                                                                                                                                    DigitalSignaturesConfig)
                                                                                                                                                                                                                  (ZUser
                                                                                                                                                                                                                   :> (Summary
                                                                                                                                                                                                                         "[deprecated] Get config for digitalSignatures"
                                                                                                                                                                                                                       :> (Until
                                                                                                                                                                                                                             'V2
                                                                                                                                                                                                                           :> (Description
                                                                                                                                                                                                                                 "Deprecated. Please use `GET /teams/:tid/features/digitalSignatures` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                                                                           :> ("teams"
                                                                                                                                                                                                                                               :> (Capture
                                                                                                                                                                                                                                                     "tid"
                                                                                                                                                                                                                                                     TeamId
                                                                                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                                                                                       :> ("digital-signatures"
                                                                                                                                                                                                                                                           :> Get
                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                                                   DigitalSignaturesConfig)))))))))))))))
                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                      '("get-config",
                                                                                                                                                                                                        LegalholdConfig)
                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                         "[deprecated] Get feature config for feature legalhold"
                                                                                                                                                                                                       :> (Until
                                                                                                                                                                                                             'V2
                                                                                                                                                                                                           :> (Description
                                                                                                                                                                                                                 "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                               :> (ZUser
                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                             OperationDenied
                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                                                               :> ("feature-configs"
                                                                                                                                                                                                                                   :> ("legalhold"
                                                                                                                                                                                                                                       :> Get
                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                                               LegalholdConfig))))))))))
                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                            '("get-config",
                                                                                                                                                                                                              SSOConfig)
                                                                                                                                                                                                            (Summary
                                                                                                                                                                                                               "[deprecated] Get feature config for feature sso"
                                                                                                                                                                                                             :> (Until
                                                                                                                                                                                                                   'V2
                                                                                                                                                                                                                 :> (Description
                                                                                                                                                                                                                       "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                     :> (ZUser
                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                   OperationDenied
                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                                                                     :> ("feature-configs"
                                                                                                                                                                                                                                         :> ("sso"
                                                                                                                                                                                                                                             :> Get
                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                                     SSOConfig))))))))))
                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                  '("get-config",
                                                                                                                                                                                                                    SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                  (Summary
                                                                                                                                                                                                                     "[deprecated] Get feature config for feature searchVisibility"
                                                                                                                                                                                                                   :> (Until
                                                                                                                                                                                                                         'V2
                                                                                                                                                                                                                       :> (Description
                                                                                                                                                                                                                             "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                           :> (ZUser
                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                                                                           :> ("feature-configs"
                                                                                                                                                                                                                                               :> ("searchVisibility"
                                                                                                                                                                                                                                                   :> Get
                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                                                                           SearchVisibilityAvailableConfig))))))))))
                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                        '("get-config",
                                                                                                                                                                                                                          ValidateSAMLEmailsConfig)
                                                                                                                                                                                                                        (Summary
                                                                                                                                                                                                                           "[deprecated] Get feature config for feature validateSAMLemails"
                                                                                                                                                                                                                         :> (Until
                                                                                                                                                                                                                               'V2
                                                                                                                                                                                                                             :> (Description
                                                                                                                                                                                                                                   "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                 :> (ZUser
                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                                                                 :> ("feature-configs"
                                                                                                                                                                                                                                                     :> ("validateSAMLemails"
                                                                                                                                                                                                                                                         :> Get
                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                                                 ValidateSAMLEmailsConfig))))))))))
                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                              '("get-config",
                                                                                                                                                                                                                                DigitalSignaturesConfig)
                                                                                                                                                                                                                              (Summary
                                                                                                                                                                                                                                 "[deprecated] Get feature config for feature digitalSignatures"
                                                                                                                                                                                                                               :> (Until
                                                                                                                                                                                                                                     'V2
                                                                                                                                                                                                                                   :> (Description
                                                                                                                                                                                                                                         "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                       :> (ZUser
                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                                                                                       :> ("feature-configs"
                                                                                                                                                                                                                                                           :> ("digitalSignatures"
                                                                                                                                                                                                                                                               :> Get
                                                                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                                                                       DigitalSignaturesConfig))))))))))
                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                    '("get-config",
                                                                                                                                                                                                                                      AppLockConfig)
                                                                                                                                                                                                                                    (Summary
                                                                                                                                                                                                                                       "[deprecated] Get feature config for feature appLock"
                                                                                                                                                                                                                                     :> (Until
                                                                                                                                                                                                                                           'V2
                                                                                                                                                                                                                                         :> (Description
                                                                                                                                                                                                                                               "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                             :> (ZUser
                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                           OperationDenied
                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                                                                                                             :> ("feature-configs"
                                                                                                                                                                                                                                                                 :> ("appLock"
                                                                                                                                                                                                                                                                     :> Get
                                                                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                                                                                             AppLockConfig))))))))))
                                                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                                                          '("get-config",
                                                                                                                                                                                                                                            FileSharingConfig)
                                                                                                                                                                                                                                          (Summary
                                                                                                                                                                                                                                             "[deprecated] Get feature config for feature fileSharing"
                                                                                                                                                                                                                                           :> (Until
                                                                                                                                                                                                                                                 'V2
                                                                                                                                                                                                                                               :> (Description
                                                                                                                                                                                                                                                     "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                   :> (ZUser
                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                 OperationDenied
                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                                                                                                   :> ("feature-configs"
                                                                                                                                                                                                                                                                       :> ("fileSharing"
                                                                                                                                                                                                                                                                           :> Get
                                                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                                                                   FileSharingConfig))))))))))
                                                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                                                '("get-config",
                                                                                                                                                                                                                                                  ClassifiedDomainsConfig)
                                                                                                                                                                                                                                                (Summary
                                                                                                                                                                                                                                                   "[deprecated] Get feature config for feature classifiedDomains"
                                                                                                                                                                                                                                                 :> (Until
                                                                                                                                                                                                                                                       'V2
                                                                                                                                                                                                                                                     :> (Description
                                                                                                                                                                                                                                                           "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                         :> (ZUser
                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                                                                                                         :> ("feature-configs"
                                                                                                                                                                                                                                                                             :> ("classifiedDomains"
                                                                                                                                                                                                                                                                                 :> Get
                                                                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                                                                                         ClassifiedDomainsConfig))))))))))
                                                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                                                      '("get-config",
                                                                                                                                                                                                                                                        ConferenceCallingConfig)
                                                                                                                                                                                                                                                      (Summary
                                                                                                                                                                                                                                                         "[deprecated] Get feature config for feature conferenceCalling"
                                                                                                                                                                                                                                                       :> (Until
                                                                                                                                                                                                                                                             'V2
                                                                                                                                                                                                                                                           :> (Description
                                                                                                                                                                                                                                                                 "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                               :> (ZUser
                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                             OperationDenied
                                                                                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                                                                                                               :> ("feature-configs"
                                                                                                                                                                                                                                                                                   :> ("conferenceCalling"
                                                                                                                                                                                                                                                                                       :> Get
                                                                                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                                                                                               ConferenceCallingConfig))))))))))
                                                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                                                            '("get-config",
                                                                                                                                                                                                                                                              SelfDeletingMessagesConfig)
                                                                                                                                                                                                                                                            (Summary
                                                                                                                                                                                                                                                               "[deprecated] Get feature config for feature selfDeletingMessages"
                                                                                                                                                                                                                                                             :> (Until
                                                                                                                                                                                                                                                                   'V2
                                                                                                                                                                                                                                                                 :> (Description
                                                                                                                                                                                                                                                                       "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                     :> (ZUser
                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                   OperationDenied
                                                                                                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                                                                                                                     :> ("feature-configs"
                                                                                                                                                                                                                                                                                         :> ("selfDeletingMessages"
                                                                                                                                                                                                                                                                                             :> Get
                                                                                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                                                                                     SelfDeletingMessagesConfig))))))))))
                                                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                                                  '("get-config",
                                                                                                                                                                                                                                                                    GuestLinksConfig)
                                                                                                                                                                                                                                                                  (Summary
                                                                                                                                                                                                                                                                     "[deprecated] Get feature config for feature conversationGuestLinks"
                                                                                                                                                                                                                                                                   :> (Until
                                                                                                                                                                                                                                                                         'V2
                                                                                                                                                                                                                                                                       :> (Description
                                                                                                                                                                                                                                                                             "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                           :> (ZUser
                                                                                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                                                                                                                           :> ("feature-configs"
                                                                                                                                                                                                                                                                                               :> ("conversationGuestLinks"
                                                                                                                                                                                                                                                                                                   :> Get
                                                                                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                                                                                                                           GuestLinksConfig))))))))))
                                                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                                                        '("get-config",
                                                                                                                                                                                                                                                                          SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                                                                                        (Summary
                                                                                                                                                                                                                                                                           "[deprecated] Get feature config for feature sndFactorPasswordChallenge"
                                                                                                                                                                                                                                                                         :> (Until
                                                                                                                                                                                                                                                                               'V2
                                                                                                                                                                                                                                                                             :> (Description
                                                                                                                                                                                                                                                                                   "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                                 :> (ZUser
                                                                                                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                                                                                                                 :> ("feature-configs"
                                                                                                                                                                                                                                                                                                     :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                                                                                                                         :> Get
                                                                                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                                                                                                 SndFactorPasswordChallengeConfig))))))))))
                                                                                                                                                                                                                                                                      :<|> Named
                                                                                                                                                                                                                                                                             '("get-config",
                                                                                                                                                                                                                                                                               MLSConfig)
                                                                                                                                                                                                                                                                             (Summary
                                                                                                                                                                                                                                                                                "[deprecated] Get feature config for feature mls"
                                                                                                                                                                                                                                                                              :> (Until
                                                                                                                                                                                                                                                                                    'V2
                                                                                                                                                                                                                                                                                  :> (Description
                                                                                                                                                                                                                                                                                        "Deprecated. Please use `GET /feature-configs` instead.\nThe usage of this endpoint was removed in iOS in version 3.101. It is not used by team management, or webapp, and is potentially used by the old Android client as of June 2022"
                                                                                                                                                                                                                                                                                      :> (ZUser
                                                                                                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                                                                                                                                      :> ("feature-configs"
                                                                                                                                                                                                                                                                                                          :> ("mls"
                                                                                                                                                                                                                                                                                                              :> Get
                                                                                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                                                                                                      MLSConfig)))))))))))))))))))))))))))))))))))))))))))))))))
                                 :<|> ((Named
                                          "mls-message"
                                          ("mls"
                                           :> (Summary "Post an MLS message"
                                               :> (From 'V5
                                                   :> (MakesFederatedCall
                                                         'Galley "on-mls-message-sent"
                                                       :> (MakesFederatedCall
                                                             'Galley "send-mls-message"
                                                           :> (MakesFederatedCall
                                                                 'Galley "on-conversation-updated"
                                                               :> (MakesFederatedCall
                                                                     'Brig "get-mls-clients"
                                                                   :> (CanThrow 'ConvAccessDenied
                                                                       :> (CanThrow
                                                                             'ConvMemberNotFound
                                                                           :> (CanThrow
                                                                                 'ConvNotFound
                                                                               :> (CanThrow
                                                                                     'LegalHoldNotEnabled
                                                                                   :> (CanThrow
                                                                                         'MissingLegalholdConsent
                                                                                       :> (CanThrow
                                                                                             'MLSClientMismatch
                                                                                           :> (CanThrow
                                                                                                 'MLSClientSenderUserMismatch
                                                                                               :> (CanThrow
                                                                                                     'MLSCommitMissingReferences
                                                                                                   :> (CanThrow
                                                                                                         'MLSGroupConversationMismatch
                                                                                                       :> (CanThrow
                                                                                                             'MLSInvalidLeafNodeIndex
                                                                                                           :> (CanThrow
                                                                                                                 'MLSNotEnabled
                                                                                                               :> (CanThrow
                                                                                                                     'MLSProposalNotFound
                                                                                                                   :> (CanThrow
                                                                                                                         'MLSProtocolErrorTag
                                                                                                                       :> (CanThrow
                                                                                                                             'MLSSelfRemovalNotAllowed
                                                                                                                           :> (CanThrow
                                                                                                                                 'MLSStaleMessage
                                                                                                                               :> (CanThrow
                                                                                                                                     'MLSSubConvClientNotInParent
                                                                                                                                   :> (CanThrow
                                                                                                                                         'MLSUnsupportedMessage
                                                                                                                                       :> (CanThrow
                                                                                                                                             'MLSUnsupportedProposal
                                                                                                                                           :> (CanThrow
                                                                                                                                                 MLSProposalFailure
                                                                                                                                               :> (CanThrow
                                                                                                                                                     NonFederatingBackends
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         UnreachableBackends
                                                                                                                                                       :> ("messages"
                                                                                                                                                           :> (ZLocalUser
                                                                                                                                                               :> (ZClient
                                                                                                                                                                   :> (ZConn
                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                             '[MLS]
                                                                                                                                                                             (RawMLS
                                                                                                                                                                                Message)
                                                                                                                                                                           :> MultiVerb
                                                                                                                                                                                'POST
                                                                                                                                                                                '[JSON]
                                                                                                                                                                                '[Respond
                                                                                                                                                                                    201
                                                                                                                                                                                    "Message sent"
                                                                                                                                                                                    MLSMessageSendingStatus]
                                                                                                                                                                                MLSMessageSendingStatus)))))))))))))))))))))))))))))))))
                                        :<|> (Named
                                                "mls-commit-bundle"
                                                ("mls"
                                                 :> (Summary "Post a MLS CommitBundle"
                                                     :> (From 'V5
                                                         :> (MakesFederatedCall
                                                               'Galley "on-mls-message-sent"
                                                             :> (MakesFederatedCall
                                                                   'Galley "mls-welcome"
                                                                 :> (MakesFederatedCall
                                                                       'Galley
                                                                       "send-mls-commit-bundle"
                                                                     :> (MakesFederatedCall
                                                                           'Galley
                                                                           "on-conversation-updated"
                                                                         :> (MakesFederatedCall
                                                                               'Brig
                                                                               "get-mls-clients"
                                                                             :> (MakesFederatedCall
                                                                                   'Brig
                                                                                   "get-users-by-ids"
                                                                                 :> (MakesFederatedCall
                                                                                       'Brig
                                                                                       "api-version"
                                                                                     :> (CanThrow
                                                                                           'ConvAccessDenied
                                                                                         :> (CanThrow
                                                                                               'ConvMemberNotFound
                                                                                             :> (CanThrow
                                                                                                   'ConvNotFound
                                                                                                 :> (CanThrow
                                                                                                       'LegalHoldNotEnabled
                                                                                                     :> (CanThrow
                                                                                                           'MissingLegalholdConsent
                                                                                                         :> (CanThrow
                                                                                                               'MLSClientMismatch
                                                                                                             :> (CanThrow
                                                                                                                   'MLSClientSenderUserMismatch
                                                                                                                 :> (CanThrow
                                                                                                                       'MLSCommitMissingReferences
                                                                                                                     :> (CanThrow
                                                                                                                           'MLSGroupConversationMismatch
                                                                                                                         :> (CanThrow
                                                                                                                               'MLSInvalidLeafNodeIndex
                                                                                                                             :> (CanThrow
                                                                                                                                   'MLSNotEnabled
                                                                                                                                 :> (CanThrow
                                                                                                                                       'MLSProposalNotFound
                                                                                                                                     :> (CanThrow
                                                                                                                                           'MLSProtocolErrorTag
                                                                                                                                         :> (CanThrow
                                                                                                                                               'MLSSelfRemovalNotAllowed
                                                                                                                                             :> (CanThrow
                                                                                                                                                   'MLSStaleMessage
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'MLSSubConvClientNotInParent
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'MLSUnsupportedMessage
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'MLSUnsupportedProposal
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'MLSWelcomeMismatch
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       'MLSLegalholdIncompatible
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           MLSProposalFailure
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               NonFederatingBackends
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   UnreachableBackends
                                                                                                                                                                                 :> ("commit-bundles"
                                                                                                                                                                                     :> (ZLocalUser
                                                                                                                                                                                         :> (ZClient
                                                                                                                                                                                             :> (ZConn
                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                       '[MLS]
                                                                                                                                                                                                       (RawMLS
                                                                                                                                                                                                          CommitBundle)
                                                                                                                                                                                                     :> MultiVerb
                                                                                                                                                                                                          'POST
                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                          '[Respond
                                                                                                                                                                                                              201
                                                                                                                                                                                                              "Commit accepted and forwarded"
                                                                                                                                                                                                              MLSMessageSendingStatus]
                                                                                                                                                                                                          MLSMessageSendingStatus))))))))))))))))))))))))))))))))))))))
                                              :<|> Named
                                                     "mls-public-keys"
                                                     ("mls"
                                                      :> (Summary
                                                            "Get public keys used by the backend to sign external proposals"
                                                          :> (Description
                                                                "The format of the returned key is determined by the `format` query parameter:\n - raw (default): base64-encoded raw public keys\n - jwk: keys are nested objects in JWK format."
                                                              :> (From 'V5
                                                                  :> (CanThrow 'MLSNotEnabled
                                                                      :> ("public-keys"
                                                                          :> (ZLocalUser
                                                                              :> (QueryParam
                                                                                    "format"
                                                                                    MLSPublicKeyFormat
                                                                                  :> MultiVerb
                                                                                       'GET
                                                                                       '[JSON]
                                                                                       '[Respond
                                                                                           200
                                                                                           "Public keys"
                                                                                           (MLSKeysByPurpose
                                                                                              (MLSKeys
                                                                                                 SomeKey))]
                                                                                       (MLSKeysByPurpose
                                                                                          (MLSKeys
                                                                                             SomeKey))))))))))))
                                       :<|> (CustomBackendAPI
                                             :<|> ((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"
                                                                   :> (MakesFederatedCall
                                                                         'Galley
                                                                         "on-conversation-updated"
                                                                       :> (MakesFederatedCall
                                                                             'Galley
                                                                             "on-mls-message-sent"
                                                                           :> (MakesFederatedCall
                                                                                 'Brig
                                                                                 "get-users-by-ids"
                                                                               :> (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"
                                                                               :> (MakesFederatedCall
                                                                                     'Galley
                                                                                     "on-conversation-updated"
                                                                                   :> (MakesFederatedCall
                                                                                         'Galley
                                                                                         "on-mls-message-sent"
                                                                                       :> (MakesFederatedCall
                                                                                             'Brig
                                                                                             "get-users-by-ids"
                                                                                           :> (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"
                                                                                     :> (MakesFederatedCall
                                                                                           'Galley
                                                                                           "on-conversation-updated"
                                                                                         :> (MakesFederatedCall
                                                                                               'Galley
                                                                                               "on-mls-message-sent"
                                                                                             :> (MakesFederatedCall
                                                                                                   'Brig
                                                                                                   "get-users-by-ids"
                                                                                                 :> (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"
                                                                                           :> (MakesFederatedCall
                                                                                                 'Galley
                                                                                                 "on-conversation-updated"
                                                                                               :> (MakesFederatedCall
                                                                                                     'Galley
                                                                                                     "on-mls-message-sent"
                                                                                                   :> (MakesFederatedCall
                                                                                                         'Brig
                                                                                                         "get-users-by-ids"
                                                                                                       :> (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"
                                                                                                :> (MakesFederatedCall
                                                                                                      'Galley
                                                                                                      "on-conversation-updated"
                                                                                                    :> (MakesFederatedCall
                                                                                                          'Galley
                                                                                                          "on-mls-message-sent"
                                                                                                        :> (MakesFederatedCall
                                                                                                              'Brig
                                                                                                              "get-users-by-ids"
                                                                                                            :> (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"]
                                                                                                                                                                                                 ())))))))))))))))))))))))))))))))
                                                   :<|> ((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)))))))))))))))
                                                         :<|> TeamNotificationAPI))))))))))
  '[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,
    Error InvalidInput, Error InternalError, Error FederationError,
    Async, Delay, Fail, Embed IO, Error JSONResponse, Resource,
    Final IO]
servantSitemap
            ((Named
    "get-unqualified-conversation"
    (QualifiedWithTag 'QLocal UserId -> ConvId -> Handler Conversation)
  :<|> (Named
          "get-unqualified-conversation-legalhold-alias"
          (QualifiedWithTag 'QLocal UserId -> ConvId -> Handler Conversation)
        :<|> (Named
                "get-conversation@v2"
                (Dict (HasAnnotation 'Remote "galley" "get-conversations")
                 -> QualifiedWithTag 'QLocal UserId
                 -> Qualified ConvId
                 -> Handler Conversation)
              :<|> (Named
                      "get-conversation@v5"
                      (Dict (HasAnnotation 'Remote "galley" "get-conversations")
                       -> QualifiedWithTag 'QLocal UserId
                       -> Qualified ConvId
                       -> Handler Conversation)
                    :<|> (Named
                            "get-conversation"
                            (Dict (HasAnnotation 'Remote "galley" "get-conversations")
                             -> QualifiedWithTag 'QLocal UserId
                             -> Qualified ConvId
                             -> Handler Conversation)
                          :<|> (Named
                                  "get-conversation-roles"
                                  (QualifiedWithTag 'QLocal UserId
                                   -> ConvId -> Handler ConversationRolesList)
                                :<|> (Named
                                        "get-group-info"
                                        (Dict (HasAnnotation 'Remote "galley" "query-group-info")
                                         -> QualifiedWithTag 'QLocal UserId
                                         -> Qualified ConvId
                                         -> Handler GroupInfoData)
                                      :<|> (Named
                                              "list-conversation-ids-unqualified"
                                              (QualifiedWithTag 'QLocal UserId
                                               -> Maybe ConvId
                                               -> Maybe (Range 1 1000 Int32)
                                               -> Handler (ConversationList ConvId))
                                            :<|> (Named
                                                    "list-conversation-ids-v2"
                                                    (QualifiedWithTag 'QLocal UserId
                                                     -> GetPaginatedConversationIds
                                                     -> Handler ConvIdsPage)
                                                  :<|> (Named
                                                          "list-conversation-ids"
                                                          (QualifiedWithTag 'QLocal UserId
                                                           -> GetPaginatedConversationIds
                                                           -> Handler ConvIdsPage)
                                                        :<|> (Named
                                                                "get-conversations"
                                                                (QualifiedWithTag 'QLocal UserId
                                                                 -> Maybe
                                                                      (Range
                                                                         1
                                                                         32
                                                                         (CommaSeparatedList
                                                                            ConvId))
                                                                 -> Maybe ConvId
                                                                 -> Maybe (Range 1 500 Int32)
                                                                 -> Handler
                                                                      (ConversationList
                                                                         Conversation))
                                                              :<|> (Named
                                                                      "list-conversations@v1"
                                                                      (Dict
                                                                         (HasAnnotation
                                                                            'Remote
                                                                            "galley"
                                                                            "get-conversations")
                                                                       -> QualifiedWithTag
                                                                            'QLocal UserId
                                                                       -> ListConversations
                                                                       -> Handler
                                                                            ConversationsResponse)
                                                                    :<|> (Named
                                                                            "list-conversations@v2"
                                                                            (Dict
                                                                               (HasAnnotation
                                                                                  'Remote
                                                                                  "galley"
                                                                                  "get-conversations")
                                                                             -> QualifiedWithTag
                                                                                  'QLocal UserId
                                                                             -> ListConversations
                                                                             -> Handler
                                                                                  ConversationsResponse)
                                                                          :<|> (Named
                                                                                  "list-conversations@v5"
                                                                                  (Dict
                                                                                     (HasAnnotation
                                                                                        'Remote
                                                                                        "galley"
                                                                                        "get-conversations")
                                                                                   -> QualifiedWithTag
                                                                                        'QLocal
                                                                                        UserId
                                                                                   -> ListConversations
                                                                                   -> Handler
                                                                                        ConversationsResponse)
                                                                                :<|> (Named
                                                                                        "list-conversations"
                                                                                        (Dict
                                                                                           (HasAnnotation
                                                                                              'Remote
                                                                                              "galley"
                                                                                              "get-conversations")
                                                                                         -> QualifiedWithTag
                                                                                              'QLocal
                                                                                              UserId
                                                                                         -> ListConversations
                                                                                         -> Handler
                                                                                              ConversationsResponse)
                                                                                      :<|> (Named
                                                                                              "get-conversation-by-reusable-code"
                                                                                              (QualifiedWithTag
                                                                                                 'QLocal
                                                                                                 UserId
                                                                                               -> Key
                                                                                               -> Value
                                                                                               -> Handler
                                                                                                    ConversationCoverView)
                                                                                            :<|> (Named
                                                                                                    "create-group-conversation@v2"
                                                                                                    (Dict
                                                                                                       (HasAnnotation
                                                                                                          'Remote
                                                                                                          "brig"
                                                                                                          "api-version")
                                                                                                     -> Dict
                                                                                                          (HasAnnotation
                                                                                                             'Remote
                                                                                                             "galley"
                                                                                                             "on-conversation-created")
                                                                                                     -> Dict
                                                                                                          (HasAnnotation
                                                                                                             'Remote
                                                                                                             "galley"
                                                                                                             "on-conversation-updated")
                                                                                                     -> QualifiedWithTag
                                                                                                          'QLocal
                                                                                                          UserId
                                                                                                     -> Maybe
                                                                                                          ConnId
                                                                                                     -> NewConv
                                                                                                     -> Handler
                                                                                                          (ResponseForExistedCreated
                                                                                                             Conversation))
                                                                                                  :<|> (Named
                                                                                                          "create-group-conversation@v3"
                                                                                                          (Dict
                                                                                                             (HasAnnotation
                                                                                                                'Remote
                                                                                                                "brig"
                                                                                                                "api-version")
                                                                                                           -> Dict
                                                                                                                (HasAnnotation
                                                                                                                   'Remote
                                                                                                                   "galley"
                                                                                                                   "on-conversation-created")
                                                                                                           -> Dict
                                                                                                                (HasAnnotation
                                                                                                                   'Remote
                                                                                                                   "galley"
                                                                                                                   "on-conversation-updated")
                                                                                                           -> QualifiedWithTag
                                                                                                                'QLocal
                                                                                                                UserId
                                                                                                           -> Maybe
                                                                                                                ConnId
                                                                                                           -> NewConv
                                                                                                           -> Handler
                                                                                                                (ResponseForExistedCreated
                                                                                                                   Conversation))
                                                                                                        :<|> (Named
                                                                                                                "create-group-conversation@v5"
                                                                                                                (Dict
                                                                                                                   (HasAnnotation
                                                                                                                      'Remote
                                                                                                                      "brig"
                                                                                                                      "api-version")
                                                                                                                 -> Dict
                                                                                                                      (HasAnnotation
                                                                                                                         'Remote
                                                                                                                         "brig"
                                                                                                                         "get-not-fully-connected-backends")
                                                                                                                 -> Dict
                                                                                                                      (HasAnnotation
                                                                                                                         'Remote
                                                                                                                         "galley"
                                                                                                                         "on-conversation-created")
                                                                                                                 -> Dict
                                                                                                                      (HasAnnotation
                                                                                                                         'Remote
                                                                                                                         "galley"
                                                                                                                         "on-conversation-updated")
                                                                                                                 -> QualifiedWithTag
                                                                                                                      'QLocal
                                                                                                                      UserId
                                                                                                                 -> Maybe
                                                                                                                      ConnId
                                                                                                                 -> NewConv
                                                                                                                 -> Handler
                                                                                                                      CreateGroupConversationResponse)
                                                                                                              :<|> (Named
                                                                                                                      "create-group-conversation"
                                                                                                                      (Dict
                                                                                                                         (HasAnnotation
                                                                                                                            'Remote
                                                                                                                            "brig"
                                                                                                                            "api-version")
                                                                                                                       -> Dict
                                                                                                                            (HasAnnotation
                                                                                                                               'Remote
                                                                                                                               "brig"
                                                                                                                               "get-not-fully-connected-backends")
                                                                                                                       -> Dict
                                                                                                                            (HasAnnotation
                                                                                                                               'Remote
                                                                                                                               "galley"
                                                                                                                               "on-conversation-created")
                                                                                                                       -> Dict
                                                                                                                            (HasAnnotation
                                                                                                                               'Remote
                                                                                                                               "galley"
                                                                                                                               "on-conversation-updated")
                                                                                                                       -> QualifiedWithTag
                                                                                                                            'QLocal
                                                                                                                            UserId
                                                                                                                       -> Maybe
                                                                                                                            ConnId
                                                                                                                       -> NewConv
                                                                                                                       -> Handler
                                                                                                                            CreateGroupConversationResponse)
                                                                                                                    :<|> (Named
                                                                                                                            "create-self-conversation@v2"
                                                                                                                            (QualifiedWithTag
                                                                                                                               'QLocal
                                                                                                                               UserId
                                                                                                                             -> Handler
                                                                                                                                  (ResponseForExistedCreated
                                                                                                                                     Conversation))
                                                                                                                          :<|> (Named
                                                                                                                                  "create-self-conversation@v5"
                                                                                                                                  (QualifiedWithTag
                                                                                                                                     'QLocal
                                                                                                                                     UserId
                                                                                                                                   -> Handler
                                                                                                                                        (ResponseForExistedCreated
                                                                                                                                           Conversation))
                                                                                                                                :<|> (Named
                                                                                                                                        "create-self-conversation"
                                                                                                                                        (QualifiedWithTag
                                                                                                                                           'QLocal
                                                                                                                                           UserId
                                                                                                                                         -> Handler
                                                                                                                                              (ResponseForExistedCreated
                                                                                                                                                 Conversation))
                                                                                                                                      :<|> (Named
                                                                                                                                              "get-mls-self-conversation@v5"
                                                                                                                                              (QualifiedWithTag
                                                                                                                                                 'QLocal
                                                                                                                                                 UserId
                                                                                                                                               -> Handler
                                                                                                                                                    Conversation)
                                                                                                                                            :<|> (Named
                                                                                                                                                    "get-mls-self-conversation"
                                                                                                                                                    (QualifiedWithTag
                                                                                                                                                       'QLocal
                                                                                                                                                       UserId
                                                                                                                                                     -> Handler
                                                                                                                                                          Conversation)
                                                                                                                                                  :<|> (Named
                                                                                                                                                          "get-subconversation"
                                                                                                                                                          (Dict
                                                                                                                                                             (HasAnnotation
                                                                                                                                                                'Remote
                                                                                                                                                                "galley"
                                                                                                                                                                "get-sub-conversation")
                                                                                                                                                           -> QualifiedWithTag
                                                                                                                                                                'QLocal
                                                                                                                                                                UserId
                                                                                                                                                           -> Qualified
                                                                                                                                                                ConvId
                                                                                                                                                           -> SubConvId
                                                                                                                                                           -> Handler
                                                                                                                                                                PublicSubConversation)
                                                                                                                                                        :<|> (Named
                                                                                                                                                                "leave-subconversation"
                                                                                                                                                                (Dict
                                                                                                                                                                   (HasAnnotation
                                                                                                                                                                      'Remote
                                                                                                                                                                      "galley"
                                                                                                                                                                      "on-mls-message-sent")
                                                                                                                                                                 -> Dict
                                                                                                                                                                      (HasAnnotation
                                                                                                                                                                         'Remote
                                                                                                                                                                         "galley"
                                                                                                                                                                         "leave-sub-conversation")
                                                                                                                                                                 -> QualifiedWithTag
                                                                                                                                                                      'QLocal
                                                                                                                                                                      UserId
                                                                                                                                                                 -> ClientId
                                                                                                                                                                 -> Qualified
                                                                                                                                                                      ConvId
                                                                                                                                                                 -> SubConvId
                                                                                                                                                                 -> Handler
                                                                                                                                                                      ())
                                                                                                                                                              :<|> (Named
                                                                                                                                                                      "delete-subconversation"
                                                                                                                                                                      (Dict
                                                                                                                                                                         (HasAnnotation
                                                                                                                                                                            'Remote
                                                                                                                                                                            "galley"
                                                                                                                                                                            "delete-sub-conversation")
                                                                                                                                                                       -> QualifiedWithTag
                                                                                                                                                                            'QLocal
                                                                                                                                                                            UserId
                                                                                                                                                                       -> Qualified
                                                                                                                                                                            ConvId
                                                                                                                                                                       -> SubConvId
                                                                                                                                                                       -> DeleteSubConversationRequest
                                                                                                                                                                       -> Handler
                                                                                                                                                                            ())
                                                                                                                                                                    :<|> (Named
                                                                                                                                                                            "get-subconversation-group-info"
                                                                                                                                                                            (Dict
                                                                                                                                                                               (HasAnnotation
                                                                                                                                                                                  'Remote
                                                                                                                                                                                  "galley"
                                                                                                                                                                                  "query-group-info")
                                                                                                                                                                             -> QualifiedWithTag
                                                                                                                                                                                  'QLocal
                                                                                                                                                                                  UserId
                                                                                                                                                                             -> Qualified
                                                                                                                                                                                  ConvId
                                                                                                                                                                             -> SubConvId
                                                                                                                                                                             -> Handler
                                                                                                                                                                                  GroupInfoData)
                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                  "create-one-to-one-conversation@v2"
                                                                                                                                                                                  (Dict
                                                                                                                                                                                     (HasAnnotation
                                                                                                                                                                                        'Remote
                                                                                                                                                                                        "brig"
                                                                                                                                                                                        "api-version")
                                                                                                                                                                                   -> Dict
                                                                                                                                                                                        (HasAnnotation
                                                                                                                                                                                           'Remote
                                                                                                                                                                                           "galley"
                                                                                                                                                                                           "on-conversation-created")
                                                                                                                                                                                   -> QualifiedWithTag
                                                                                                                                                                                        'QLocal
                                                                                                                                                                                        UserId
                                                                                                                                                                                   -> ConnId
                                                                                                                                                                                   -> NewConv
                                                                                                                                                                                   -> Handler
                                                                                                                                                                                        (ResponseForExistedCreated
                                                                                                                                                                                           Conversation))
                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                        "create-one-to-one-conversation"
                                                                                                                                                                                        (Dict
                                                                                                                                                                                           (HasAnnotation
                                                                                                                                                                                              'Remote
                                                                                                                                                                                              "galley"
                                                                                                                                                                                              "on-conversation-created")
                                                                                                                                                                                         -> QualifiedWithTag
                                                                                                                                                                                              'QLocal
                                                                                                                                                                                              UserId
                                                                                                                                                                                         -> ConnId
                                                                                                                                                                                         -> NewConv
                                                                                                                                                                                         -> Handler
                                                                                                                                                                                              (ResponseForExistedCreated
                                                                                                                                                                                                 Conversation))
                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                              "get-one-to-one-mls-conversation@v5"
                                                                                                                                                                                              (QualifiedWithTag
                                                                                                                                                                                                 'QLocal
                                                                                                                                                                                                 UserId
                                                                                                                                                                                               -> Qualified
                                                                                                                                                                                                    UserId
                                                                                                                                                                                               -> Handler
                                                                                                                                                                                                    Conversation)
                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                    "get-one-to-one-mls-conversation@v6"
                                                                                                                                                                                                    (QualifiedWithTag
                                                                                                                                                                                                       'QLocal
                                                                                                                                                                                                       UserId
                                                                                                                                                                                                     -> Qualified
                                                                                                                                                                                                          UserId
                                                                                                                                                                                                     -> Handler
                                                                                                                                                                                                          (MLSOne2OneConversation
                                                                                                                                                                                                             MLSPublicKey))
                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                          "get-one-to-one-mls-conversation"
                                                                                                                                                                                                          (QualifiedWithTag
                                                                                                                                                                                                             'QLocal
                                                                                                                                                                                                             UserId
                                                                                                                                                                                                           -> Qualified
                                                                                                                                                                                                                UserId
                                                                                                                                                                                                           -> Maybe
                                                                                                                                                                                                                MLSPublicKeyFormat
                                                                                                                                                                                                           -> Handler
                                                                                                                                                                                                                (MLSOne2OneConversation
                                                                                                                                                                                                                   SomeKey))
                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                "add-members-to-conversation-unqualified"
                                                                                                                                                                                                                (Dict
                                                                                                                                                                                                                   (HasAnnotation
                                                                                                                                                                                                                      'Remote
                                                                                                                                                                                                                      "galley"
                                                                                                                                                                                                                      "on-conversation-updated")
                                                                                                                                                                                                                 -> Dict
                                                                                                                                                                                                                      (HasAnnotation
                                                                                                                                                                                                                         'Remote
                                                                                                                                                                                                                         "galley"
                                                                                                                                                                                                                         "on-mls-message-sent")
                                                                                                                                                                                                                 -> QualifiedWithTag
                                                                                                                                                                                                                      'QLocal
                                                                                                                                                                                                                      UserId
                                                                                                                                                                                                                 -> ConnId
                                                                                                                                                                                                                 -> ConvId
                                                                                                                                                                                                                 -> Invite
                                                                                                                                                                                                                 -> Handler
                                                                                                                                                                                                                      (UpdateResult
                                                                                                                                                                                                                         Event))
                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                      "add-members-to-conversation-unqualified2"
                                                                                                                                                                                                                      (Dict
                                                                                                                                                                                                                         (HasAnnotation
                                                                                                                                                                                                                            'Remote
                                                                                                                                                                                                                            "galley"
                                                                                                                                                                                                                            "on-conversation-updated")
                                                                                                                                                                                                                       -> Dict
                                                                                                                                                                                                                            (HasAnnotation
                                                                                                                                                                                                                               'Remote
                                                                                                                                                                                                                               "galley"
                                                                                                                                                                                                                               "on-mls-message-sent")
                                                                                                                                                                                                                       -> QualifiedWithTag
                                                                                                                                                                                                                            'QLocal
                                                                                                                                                                                                                            UserId
                                                                                                                                                                                                                       -> ConnId
                                                                                                                                                                                                                       -> ConvId
                                                                                                                                                                                                                       -> InviteQualified
                                                                                                                                                                                                                       -> Handler
                                                                                                                                                                                                                            (UpdateResult
                                                                                                                                                                                                                               Event))
                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                            "add-members-to-conversation"
                                                                                                                                                                                                                            (Dict
                                                                                                                                                                                                                               (HasAnnotation
                                                                                                                                                                                                                                  'Remote
                                                                                                                                                                                                                                  "galley"
                                                                                                                                                                                                                                  "on-conversation-updated")
                                                                                                                                                                                                                             -> Dict
                                                                                                                                                                                                                                  (HasAnnotation
                                                                                                                                                                                                                                     'Remote
                                                                                                                                                                                                                                     "galley"
                                                                                                                                                                                                                                     "on-mls-message-sent")
                                                                                                                                                                                                                             -> QualifiedWithTag
                                                                                                                                                                                                                                  'QLocal
                                                                                                                                                                                                                                  UserId
                                                                                                                                                                                                                             -> ConnId
                                                                                                                                                                                                                             -> Qualified
                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                             -> InviteQualified
                                                                                                                                                                                                                             -> Handler
                                                                                                                                                                                                                                  (UpdateResult
                                                                                                                                                                                                                                     Event))
                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                  "join-conversation-by-id-unqualified"
                                                                                                                                                                                                                                  (Dict
                                                                                                                                                                                                                                     (HasAnnotation
                                                                                                                                                                                                                                        'Remote
                                                                                                                                                                                                                                        "galley"
                                                                                                                                                                                                                                        "on-conversation-updated")
                                                                                                                                                                                                                                   -> QualifiedWithTag
                                                                                                                                                                                                                                        'QLocal
                                                                                                                                                                                                                                        UserId
                                                                                                                                                                                                                                   -> ConnId
                                                                                                                                                                                                                                   -> ConvId
                                                                                                                                                                                                                                   -> Handler
                                                                                                                                                                                                                                        (UpdateResult
                                                                                                                                                                                                                                           Event))
                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                        "join-conversation-by-code-unqualified"
                                                                                                                                                                                                                                        (Dict
                                                                                                                                                                                                                                           (HasAnnotation
                                                                                                                                                                                                                                              'Remote
                                                                                                                                                                                                                                              "galley"
                                                                                                                                                                                                                                              "on-conversation-updated")
                                                                                                                                                                                                                                         -> QualifiedWithTag
                                                                                                                                                                                                                                              'QLocal
                                                                                                                                                                                                                                              UserId
                                                                                                                                                                                                                                         -> ConnId
                                                                                                                                                                                                                                         -> JoinConversationByCode
                                                                                                                                                                                                                                         -> Handler
                                                                                                                                                                                                                                              (UpdateResult
                                                                                                                                                                                                                                                 Event))
                                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                                              "code-check"
                                                                                                                                                                                                                                              (ConversationCode
                                                                                                                                                                                                                                               -> Handler
                                                                                                                                                                                                                                                    ())
                                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                                    "create-conversation-code-unqualified@v3"
                                                                                                                                                                                                                                                    (UserId
                                                                                                                                                                                                                                                     -> Maybe
                                                                                                                                                                                                                                                          Text
                                                                                                                                                                                                                                                     -> Maybe
                                                                                                                                                                                                                                                          ConnId
                                                                                                                                                                                                                                                     -> ConvId
                                                                                                                                                                                                                                                     -> Handler
                                                                                                                                                                                                                                                          AddCodeResult)
                                                                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                                                                          "create-conversation-code-unqualified"
                                                                                                                                                                                                                                                          (UserId
                                                                                                                                                                                                                                                           -> Maybe
                                                                                                                                                                                                                                                                Text
                                                                                                                                                                                                                                                           -> Maybe
                                                                                                                                                                                                                                                                ConnId
                                                                                                                                                                                                                                                           -> ConvId
                                                                                                                                                                                                                                                           -> CreateConversationCodeRequest
                                                                                                                                                                                                                                                           -> Handler
                                                                                                                                                                                                                                                                AddCodeResult)
                                                                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                                                                "get-conversation-guest-links-status"
                                                                                                                                                                                                                                                                (UserId
                                                                                                                                                                                                                                                                 -> ConvId
                                                                                                                                                                                                                                                                 -> Handler
                                                                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                                                                         GuestLinksConfig))
                                                                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                                                                      "remove-code-unqualified"
                                                                                                                                                                                                                                                                      (QualifiedWithTag
                                                                                                                                                                                                                                                                         'QLocal
                                                                                                                                                                                                                                                                         UserId
                                                                                                                                                                                                                                                                       -> ConnId
                                                                                                                                                                                                                                                                       -> ConvId
                                                                                                                                                                                                                                                                       -> Handler
                                                                                                                                                                                                                                                                            Event)
                                                                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                                                                            "get-code"
                                                                                                                                                                                                                                                                            (Maybe
                                                                                                                                                                                                                                                                               Text
                                                                                                                                                                                                                                                                             -> QualifiedWithTag
                                                                                                                                                                                                                                                                                  'QLocal
                                                                                                                                                                                                                                                                                  UserId
                                                                                                                                                                                                                                                                             -> ConvId
                                                                                                                                                                                                                                                                             -> Handler
                                                                                                                                                                                                                                                                                  ConversationCodeInfo)
                                                                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                                                                  "member-typing-unqualified"
                                                                                                                                                                                                                                                                                  (Dict
                                                                                                                                                                                                                                                                                     (HasAnnotation
                                                                                                                                                                                                                                                                                        'Remote
                                                                                                                                                                                                                                                                                        "galley"
                                                                                                                                                                                                                                                                                        "update-typing-indicator")
                                                                                                                                                                                                                                                                                   -> Dict
                                                                                                                                                                                                                                                                                        (HasAnnotation
                                                                                                                                                                                                                                                                                           'Remote
                                                                                                                                                                                                                                                                                           "galley"
                                                                                                                                                                                                                                                                                           "on-typing-indicator-updated")
                                                                                                                                                                                                                                                                                   -> QualifiedWithTag
                                                                                                                                                                                                                                                                                        'QLocal
                                                                                                                                                                                                                                                                                        UserId
                                                                                                                                                                                                                                                                                   -> ConnId
                                                                                                                                                                                                                                                                                   -> ConvId
                                                                                                                                                                                                                                                                                   -> TypingStatus
                                                                                                                                                                                                                                                                                   -> Handler
                                                                                                                                                                                                                                                                                        ())
                                                                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                                                                        "member-typing-qualified"
                                                                                                                                                                                                                                                                                        (Dict
                                                                                                                                                                                                                                                                                           (HasAnnotation
                                                                                                                                                                                                                                                                                              'Remote
                                                                                                                                                                                                                                                                                              "galley"
                                                                                                                                                                                                                                                                                              "update-typing-indicator")
                                                                                                                                                                                                                                                                                         -> Dict
                                                                                                                                                                                                                                                                                              (HasAnnotation
                                                                                                                                                                                                                                                                                                 'Remote
                                                                                                                                                                                                                                                                                                 "galley"
                                                                                                                                                                                                                                                                                                 "on-typing-indicator-updated")
                                                                                                                                                                                                                                                                                         -> QualifiedWithTag
                                                                                                                                                                                                                                                                                              'QLocal
                                                                                                                                                                                                                                                                                              UserId
                                                                                                                                                                                                                                                                                         -> ConnId
                                                                                                                                                                                                                                                                                         -> Qualified
                                                                                                                                                                                                                                                                                              ConvId
                                                                                                                                                                                                                                                                                         -> TypingStatus
                                                                                                                                                                                                                                                                                         -> Handler
                                                                                                                                                                                                                                                                                              ())
                                                                                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                                                                                              "remove-member-unqualified"
                                                                                                                                                                                                                                                                                              (Dict
                                                                                                                                                                                                                                                                                                 (HasAnnotation
                                                                                                                                                                                                                                                                                                    'Remote
                                                                                                                                                                                                                                                                                                    "galley"
                                                                                                                                                                                                                                                                                                    "leave-conversation")
                                                                                                                                                                                                                                                                                               -> Dict
                                                                                                                                                                                                                                                                                                    (HasAnnotation
                                                                                                                                                                                                                                                                                                       'Remote
                                                                                                                                                                                                                                                                                                       "galley"
                                                                                                                                                                                                                                                                                                       "on-conversation-updated")
                                                                                                                                                                                                                                                                                               -> Dict
                                                                                                                                                                                                                                                                                                    (HasAnnotation
                                                                                                                                                                                                                                                                                                       'Remote
                                                                                                                                                                                                                                                                                                       "galley"
                                                                                                                                                                                                                                                                                                       "on-mls-message-sent")
                                                                                                                                                                                                                                                                                               -> Dict
                                                                                                                                                                                                                                                                                                    (HasAnnotation
                                                                                                                                                                                                                                                                                                       'Remote
                                                                                                                                                                                                                                                                                                       "brig"
                                                                                                                                                                                                                                                                                                       "get-users-by-ids")
                                                                                                                                                                                                                                                                                               -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                    'QLocal
                                                                                                                                                                                                                                                                                                    UserId
                                                                                                                                                                                                                                                                                               -> ConnId
                                                                                                                                                                                                                                                                                               -> ConvId
                                                                                                                                                                                                                                                                                               -> UserId
                                                                                                                                                                                                                                                                                               -> Handler
                                                                                                                                                                                                                                                                                                    (Maybe
                                                                                                                                                                                                                                                                                                       Event))
                                                                                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                                                                                    "remove-member"
                                                                                                                                                                                                                                                                                                    (Dict
                                                                                                                                                                                                                                                                                                       (HasAnnotation
                                                                                                                                                                                                                                                                                                          'Remote
                                                                                                                                                                                                                                                                                                          "galley"
                                                                                                                                                                                                                                                                                                          "leave-conversation")
                                                                                                                                                                                                                                                                                                     -> Dict
                                                                                                                                                                                                                                                                                                          (HasAnnotation
                                                                                                                                                                                                                                                                                                             'Remote
                                                                                                                                                                                                                                                                                                             "galley"
                                                                                                                                                                                                                                                                                                             "on-conversation-updated")
                                                                                                                                                                                                                                                                                                     -> Dict
                                                                                                                                                                                                                                                                                                          (HasAnnotation
                                                                                                                                                                                                                                                                                                             'Remote
                                                                                                                                                                                                                                                                                                             "galley"
                                                                                                                                                                                                                                                                                                             "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                     -> Dict
                                                                                                                                                                                                                                                                                                          (HasAnnotation
                                                                                                                                                                                                                                                                                                             'Remote
                                                                                                                                                                                                                                                                                                             "brig"
                                                                                                                                                                                                                                                                                                             "get-users-by-ids")
                                                                                                                                                                                                                                                                                                     -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                          'QLocal
                                                                                                                                                                                                                                                                                                          UserId
                                                                                                                                                                                                                                                                                                     -> ConnId
                                                                                                                                                                                                                                                                                                     -> Qualified
                                                                                                                                                                                                                                                                                                          ConvId
                                                                                                                                                                                                                                                                                                     -> Qualified
                                                                                                                                                                                                                                                                                                          UserId
                                                                                                                                                                                                                                                                                                     -> Handler
                                                                                                                                                                                                                                                                                                          (Maybe
                                                                                                                                                                                                                                                                                                             Event))
                                                                                                                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                                                                                                                          "update-other-member-unqualified"
                                                                                                                                                                                                                                                                                                          (Dict
                                                                                                                                                                                                                                                                                                             (HasAnnotation
                                                                                                                                                                                                                                                                                                                'Remote
                                                                                                                                                                                                                                                                                                                "galley"
                                                                                                                                                                                                                                                                                                                "on-conversation-updated")
                                                                                                                                                                                                                                                                                                           -> Dict
                                                                                                                                                                                                                                                                                                                (HasAnnotation
                                                                                                                                                                                                                                                                                                                   'Remote
                                                                                                                                                                                                                                                                                                                   "galley"
                                                                                                                                                                                                                                                                                                                   "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                           -> Dict
                                                                                                                                                                                                                                                                                                                (HasAnnotation
                                                                                                                                                                                                                                                                                                                   'Remote
                                                                                                                                                                                                                                                                                                                   "brig"
                                                                                                                                                                                                                                                                                                                   "get-users-by-ids")
                                                                                                                                                                                                                                                                                                           -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                'QLocal
                                                                                                                                                                                                                                                                                                                UserId
                                                                                                                                                                                                                                                                                                           -> ConnId
                                                                                                                                                                                                                                                                                                           -> ConvId
                                                                                                                                                                                                                                                                                                           -> UserId
                                                                                                                                                                                                                                                                                                           -> OtherMemberUpdate
                                                                                                                                                                                                                                                                                                           -> Handler
                                                                                                                                                                                                                                                                                                                ())
                                                                                                                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                                                                                                                "update-other-member"
                                                                                                                                                                                                                                                                                                                (Dict
                                                                                                                                                                                                                                                                                                                   (HasAnnotation
                                                                                                                                                                                                                                                                                                                      'Remote
                                                                                                                                                                                                                                                                                                                      "galley"
                                                                                                                                                                                                                                                                                                                      "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                 -> Dict
                                                                                                                                                                                                                                                                                                                      (HasAnnotation
                                                                                                                                                                                                                                                                                                                         'Remote
                                                                                                                                                                                                                                                                                                                         "galley"
                                                                                                                                                                                                                                                                                                                         "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                 -> Dict
                                                                                                                                                                                                                                                                                                                      (HasAnnotation
                                                                                                                                                                                                                                                                                                                         'Remote
                                                                                                                                                                                                                                                                                                                         "brig"
                                                                                                                                                                                                                                                                                                                         "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                 -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                      'QLocal
                                                                                                                                                                                                                                                                                                                      UserId
                                                                                                                                                                                                                                                                                                                 -> ConnId
                                                                                                                                                                                                                                                                                                                 -> Qualified
                                                                                                                                                                                                                                                                                                                      ConvId
                                                                                                                                                                                                                                                                                                                 -> Qualified
                                                                                                                                                                                                                                                                                                                      UserId
                                                                                                                                                                                                                                                                                                                 -> OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                 -> Handler
                                                                                                                                                                                                                                                                                                                      ())
                                                                                                                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                                                                                                                      "update-conversation-name-deprecated"
                                                                                                                                                                                                                                                                                                                      (Dict
                                                                                                                                                                                                                                                                                                                         (HasAnnotation
                                                                                                                                                                                                                                                                                                                            'Remote
                                                                                                                                                                                                                                                                                                                            "galley"
                                                                                                                                                                                                                                                                                                                            "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                       -> Dict
                                                                                                                                                                                                                                                                                                                            (HasAnnotation
                                                                                                                                                                                                                                                                                                                               'Remote
                                                                                                                                                                                                                                                                                                                               "galley"
                                                                                                                                                                                                                                                                                                                               "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                       -> Dict
                                                                                                                                                                                                                                                                                                                            (HasAnnotation
                                                                                                                                                                                                                                                                                                                               'Remote
                                                                                                                                                                                                                                                                                                                               "brig"
                                                                                                                                                                                                                                                                                                                               "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                       -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                            'QLocal
                                                                                                                                                                                                                                                                                                                            UserId
                                                                                                                                                                                                                                                                                                                       -> ConnId
                                                                                                                                                                                                                                                                                                                       -> ConvId
                                                                                                                                                                                                                                                                                                                       -> ConversationRename
                                                                                                                                                                                                                                                                                                                       -> Handler
                                                                                                                                                                                                                                                                                                                            (UpdateResult
                                                                                                                                                                                                                                                                                                                               Event))
                                                                                                                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                                                                                                                            "update-conversation-name-unqualified"
                                                                                                                                                                                                                                                                                                                            (Dict
                                                                                                                                                                                                                                                                                                                               (HasAnnotation
                                                                                                                                                                                                                                                                                                                                  'Remote
                                                                                                                                                                                                                                                                                                                                  "galley"
                                                                                                                                                                                                                                                                                                                                  "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                             -> Dict
                                                                                                                                                                                                                                                                                                                                  (HasAnnotation
                                                                                                                                                                                                                                                                                                                                     'Remote
                                                                                                                                                                                                                                                                                                                                     "galley"
                                                                                                                                                                                                                                                                                                                                     "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                             -> Dict
                                                                                                                                                                                                                                                                                                                                  (HasAnnotation
                                                                                                                                                                                                                                                                                                                                     'Remote
                                                                                                                                                                                                                                                                                                                                     "brig"
                                                                                                                                                                                                                                                                                                                                     "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                             -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                  'QLocal
                                                                                                                                                                                                                                                                                                                                  UserId
                                                                                                                                                                                                                                                                                                                             -> ConnId
                                                                                                                                                                                                                                                                                                                             -> ConvId
                                                                                                                                                                                                                                                                                                                             -> ConversationRename
                                                                                                                                                                                                                                                                                                                             -> Handler
                                                                                                                                                                                                                                                                                                                                  (UpdateResult
                                                                                                                                                                                                                                                                                                                                     Event))
                                                                                                                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                                                                                                                  "update-conversation-name"
                                                                                                                                                                                                                                                                                                                                  (Dict
                                                                                                                                                                                                                                                                                                                                     (HasAnnotation
                                                                                                                                                                                                                                                                                                                                        'Remote
                                                                                                                                                                                                                                                                                                                                        "galley"
                                                                                                                                                                                                                                                                                                                                        "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                   -> Dict
                                                                                                                                                                                                                                                                                                                                        (HasAnnotation
                                                                                                                                                                                                                                                                                                                                           'Remote
                                                                                                                                                                                                                                                                                                                                           "galley"
                                                                                                                                                                                                                                                                                                                                           "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                   -> Dict
                                                                                                                                                                                                                                                                                                                                        (HasAnnotation
                                                                                                                                                                                                                                                                                                                                           'Remote
                                                                                                                                                                                                                                                                                                                                           "brig"
                                                                                                                                                                                                                                                                                                                                           "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                   -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                        'QLocal
                                                                                                                                                                                                                                                                                                                                        UserId
                                                                                                                                                                                                                                                                                                                                   -> ConnId
                                                                                                                                                                                                                                                                                                                                   -> Qualified
                                                                                                                                                                                                                                                                                                                                        ConvId
                                                                                                                                                                                                                                                                                                                                   -> ConversationRename
                                                                                                                                                                                                                                                                                                                                   -> Handler
                                                                                                                                                                                                                                                                                                                                        (UpdateResult
                                                                                                                                                                                                                                                                                                                                           Event))
                                                                                                                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                                                                                                                        "update-conversation-message-timer-unqualified"
                                                                                                                                                                                                                                                                                                                                        (Dict
                                                                                                                                                                                                                                                                                                                                           (HasAnnotation
                                                                                                                                                                                                                                                                                                                                              'Remote
                                                                                                                                                                                                                                                                                                                                              "galley"
                                                                                                                                                                                                                                                                                                                                              "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                         -> Dict
                                                                                                                                                                                                                                                                                                                                              (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                 'Remote
                                                                                                                                                                                                                                                                                                                                                 "galley"
                                                                                                                                                                                                                                                                                                                                                 "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                         -> Dict
                                                                                                                                                                                                                                                                                                                                              (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                 'Remote
                                                                                                                                                                                                                                                                                                                                                 "brig"
                                                                                                                                                                                                                                                                                                                                                 "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                         -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                              'QLocal
                                                                                                                                                                                                                                                                                                                                              UserId
                                                                                                                                                                                                                                                                                                                                         -> ConnId
                                                                                                                                                                                                                                                                                                                                         -> ConvId
                                                                                                                                                                                                                                                                                                                                         -> ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                         -> Handler
                                                                                                                                                                                                                                                                                                                                              (UpdateResult
                                                                                                                                                                                                                                                                                                                                                 Event))
                                                                                                                                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                                                                                                                                              "update-conversation-message-timer"
                                                                                                                                                                                                                                                                                                                                              (Dict
                                                                                                                                                                                                                                                                                                                                                 (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                    'Remote
                                                                                                                                                                                                                                                                                                                                                    "galley"
                                                                                                                                                                                                                                                                                                                                                    "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                               -> Dict
                                                                                                                                                                                                                                                                                                                                                    (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                       'Remote
                                                                                                                                                                                                                                                                                                                                                       "galley"
                                                                                                                                                                                                                                                                                                                                                       "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                               -> Dict
                                                                                                                                                                                                                                                                                                                                                    (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                       'Remote
                                                                                                                                                                                                                                                                                                                                                       "brig"
                                                                                                                                                                                                                                                                                                                                                       "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                               -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                    'QLocal
                                                                                                                                                                                                                                                                                                                                                    UserId
                                                                                                                                                                                                                                                                                                                                               -> ConnId
                                                                                                                                                                                                                                                                                                                                               -> Qualified
                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                               -> ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                               -> Handler
                                                                                                                                                                                                                                                                                                                                                    (UpdateResult
                                                                                                                                                                                                                                                                                                                                                       Event))
                                                                                                                                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                                                                                                                                    "update-conversation-receipt-mode-unqualified"
                                                                                                                                                                                                                                                                                                                                                    (Dict
                                                                                                                                                                                                                                                                                                                                                       (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                          'Remote
                                                                                                                                                                                                                                                                                                                                                          "galley"
                                                                                                                                                                                                                                                                                                                                                          "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                                     -> Dict
                                                                                                                                                                                                                                                                                                                                                          (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                             'Remote
                                                                                                                                                                                                                                                                                                                                                             "galley"
                                                                                                                                                                                                                                                                                                                                                             "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                                     -> Dict
                                                                                                                                                                                                                                                                                                                                                          (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                             'Remote
                                                                                                                                                                                                                                                                                                                                                             "galley"
                                                                                                                                                                                                                                                                                                                                                             "update-conversation")
                                                                                                                                                                                                                                                                                                                                                     -> Dict
                                                                                                                                                                                                                                                                                                                                                          (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                             'Remote
                                                                                                                                                                                                                                                                                                                                                             "brig"
                                                                                                                                                                                                                                                                                                                                                             "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                                     -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                          'QLocal
                                                                                                                                                                                                                                                                                                                                                          UserId
                                                                                                                                                                                                                                                                                                                                                     -> ConnId
                                                                                                                                                                                                                                                                                                                                                     -> ConvId
                                                                                                                                                                                                                                                                                                                                                     -> ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                     -> Handler
                                                                                                                                                                                                                                                                                                                                                          (UpdateResult
                                                                                                                                                                                                                                                                                                                                                             Event))
                                                                                                                                                                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                                                                                                                                                                          "update-conversation-receipt-mode"
                                                                                                                                                                                                                                                                                                                                                          (Dict
                                                                                                                                                                                                                                                                                                                                                             (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                'Remote
                                                                                                                                                                                                                                                                                                                                                                "galley"
                                                                                                                                                                                                                                                                                                                                                                "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                                           -> Dict
                                                                                                                                                                                                                                                                                                                                                                (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                   'Remote
                                                                                                                                                                                                                                                                                                                                                                   "galley"
                                                                                                                                                                                                                                                                                                                                                                   "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                                           -> Dict
                                                                                                                                                                                                                                                                                                                                                                (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                   'Remote
                                                                                                                                                                                                                                                                                                                                                                   "galley"
                                                                                                                                                                                                                                                                                                                                                                   "update-conversation")
                                                                                                                                                                                                                                                                                                                                                           -> Dict
                                                                                                                                                                                                                                                                                                                                                                (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                   'Remote
                                                                                                                                                                                                                                                                                                                                                                   "brig"
                                                                                                                                                                                                                                                                                                                                                                   "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                                           -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                'QLocal
                                                                                                                                                                                                                                                                                                                                                                UserId
                                                                                                                                                                                                                                                                                                                                                           -> ConnId
                                                                                                                                                                                                                                                                                                                                                           -> Qualified
                                                                                                                                                                                                                                                                                                                                                                ConvId
                                                                                                                                                                                                                                                                                                                                                           -> ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                           -> Handler
                                                                                                                                                                                                                                                                                                                                                                (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                   Event))
                                                                                                                                                                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                "update-conversation-access-unqualified"
                                                                                                                                                                                                                                                                                                                                                                (Dict
                                                                                                                                                                                                                                                                                                                                                                   (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                      'Remote
                                                                                                                                                                                                                                                                                                                                                                      "galley"
                                                                                                                                                                                                                                                                                                                                                                      "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                                                 -> Dict
                                                                                                                                                                                                                                                                                                                                                                      (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                         'Remote
                                                                                                                                                                                                                                                                                                                                                                         "galley"
                                                                                                                                                                                                                                                                                                                                                                         "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                                                 -> Dict
                                                                                                                                                                                                                                                                                                                                                                      (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                         'Remote
                                                                                                                                                                                                                                                                                                                                                                         "brig"
                                                                                                                                                                                                                                                                                                                                                                         "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                                                 -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                      'QLocal
                                                                                                                                                                                                                                                                                                                                                                      UserId
                                                                                                                                                                                                                                                                                                                                                                 -> ConnId
                                                                                                                                                                                                                                                                                                                                                                 -> ConvId
                                                                                                                                                                                                                                                                                                                                                                 -> ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                 -> Handler
                                                                                                                                                                                                                                                                                                                                                                      (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                         Event))
                                                                                                                                                                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                      "update-conversation-access@v2"
                                                                                                                                                                                                                                                                                                                                                                      (Dict
                                                                                                                                                                                                                                                                                                                                                                         (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                            'Remote
                                                                                                                                                                                                                                                                                                                                                                            "galley"
                                                                                                                                                                                                                                                                                                                                                                            "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                                                       -> Dict
                                                                                                                                                                                                                                                                                                                                                                            (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                               'Remote
                                                                                                                                                                                                                                                                                                                                                                               "galley"
                                                                                                                                                                                                                                                                                                                                                                               "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                                                       -> Dict
                                                                                                                                                                                                                                                                                                                                                                            (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                               'Remote
                                                                                                                                                                                                                                                                                                                                                                               "brig"
                                                                                                                                                                                                                                                                                                                                                                               "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                                                       -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                            'QLocal
                                                                                                                                                                                                                                                                                                                                                                            UserId
                                                                                                                                                                                                                                                                                                                                                                       -> ConnId
                                                                                                                                                                                                                                                                                                                                                                       -> Qualified
                                                                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                                                                       -> ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                       -> Handler
                                                                                                                                                                                                                                                                                                                                                                            (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                               Event))
                                                                                                                                                                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                            "update-conversation-access"
                                                                                                                                                                                                                                                                                                                                                                            (Dict
                                                                                                                                                                                                                                                                                                                                                                               (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                                  'Remote
                                                                                                                                                                                                                                                                                                                                                                                  "galley"
                                                                                                                                                                                                                                                                                                                                                                                  "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                                                             -> Dict
                                                                                                                                                                                                                                                                                                                                                                                  (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                                     'Remote
                                                                                                                                                                                                                                                                                                                                                                                     "galley"
                                                                                                                                                                                                                                                                                                                                                                                     "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                                                             -> Dict
                                                                                                                                                                                                                                                                                                                                                                                  (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                                     'Remote
                                                                                                                                                                                                                                                                                                                                                                                     "brig"
                                                                                                                                                                                                                                                                                                                                                                                     "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                                                             -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                                  'QLocal
                                                                                                                                                                                                                                                                                                                                                                                  UserId
                                                                                                                                                                                                                                                                                                                                                                             -> ConnId
                                                                                                                                                                                                                                                                                                                                                                             -> Qualified
                                                                                                                                                                                                                                                                                                                                                                                  ConvId
                                                                                                                                                                                                                                                                                                                                                                             -> ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                             -> Handler
                                                                                                                                                                                                                                                                                                                                                                                  (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                     Event))
                                                                                                                                                                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                  "get-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                  (QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                                     'QLocal
                                                                                                                                                                                                                                                                                                                                                                                     UserId
                                                                                                                                                                                                                                                                                                                                                                                   -> ConvId
                                                                                                                                                                                                                                                                                                                                                                                   -> Handler
                                                                                                                                                                                                                                                                                                                                                                                        (Maybe
                                                                                                                                                                                                                                                                                                                                                                                           Member))
                                                                                                                                                                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                        "update-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                        (QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                                           'QLocal
                                                                                                                                                                                                                                                                                                                                                                                           UserId
                                                                                                                                                                                                                                                                                                                                                                                         -> ConnId
                                                                                                                                                                                                                                                                                                                                                                                         -> ConvId
                                                                                                                                                                                                                                                                                                                                                                                         -> MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                         -> Handler
                                                                                                                                                                                                                                                                                                                                                                                              ())
                                                                                                                                                                                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                              "update-conversation-self"
                                                                                                                                                                                                                                                                                                                                                                                              (QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                                                 'QLocal
                                                                                                                                                                                                                                                                                                                                                                                                 UserId
                                                                                                                                                                                                                                                                                                                                                                                               -> ConnId
                                                                                                                                                                                                                                                                                                                                                                                               -> Qualified
                                                                                                                                                                                                                                                                                                                                                                                                    ConvId
                                                                                                                                                                                                                                                                                                                                                                                               -> MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                               -> Handler
                                                                                                                                                                                                                                                                                                                                                                                                    ())
                                                                                                                                                                                                                                                                                                                                                                                            :<|> Named
                                                                                                                                                                                                                                                                                                                                                                                                   "update-conversation-protocol"
                                                                                                                                                                                                                                                                                                                                                                                                   (QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                                                      'QLocal
                                                                                                                                                                                                                                                                                                                                                                                                      UserId
                                                                                                                                                                                                                                                                                                                                                                                                    -> ConnId
                                                                                                                                                                                                                                                                                                                                                                                                    -> Qualified
                                                                                                                                                                                                                                                                                                                                                                                                         ConvId
                                                                                                                                                                                                                                                                                                                                                                                                    -> ProtocolUpdate
                                                                                                                                                                                                                                                                                                                                                                                                    -> Handler
                                                                                                                                                                                                                                                                                                                                                                                                         (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                            Event))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
 :<|> ((Named
          "get-team-conversation-roles"
          (UserId -> TeamId -> Handler ConversationRolesList)
        :<|> (Named
                "get-team-conversations"
                (UserId -> TeamId -> Handler TeamConversationList)
              :<|> (Named
                      "get-team-conversation"
                      (UserId -> TeamId -> ConvId -> Handler TeamConversation)
                    :<|> Named
                           "delete-team-conversation"
                           (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                            -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                            -> Dict (HasAnnotation 'Remote "brig" "get-users-by-ids")
                            -> QualifiedWithTag 'QLocal UserId
                            -> ConnId
                            -> TeamId
                            -> ConvId
                            -> Handler ()))))
       :<|> ((Named
                "post-otr-message-unqualified"
                (Dict (HasAnnotation 'Remote "galley" "on-message-sent")
                 -> Dict (HasAnnotation 'Remote "brig" "get-user-clients")
                 -> QualifiedWithTag 'QLocal UserId
                 -> ConnId
                 -> ConvId
                 -> Maybe IgnoreMissing
                 -> Maybe ReportMissing
                 -> NewOtrMessage
                 -> Handler (PostOtrResponse ClientMismatch))
              :<|> (Named
                      "post-otr-broadcast-unqualified"
                      (QualifiedWithTag 'QLocal UserId
                       -> ConnId
                       -> Maybe IgnoreMissing
                       -> Maybe ReportMissing
                       -> NewOtrMessage
                       -> Handler (PostOtrResponse ClientMismatch))
                    :<|> (Named
                            "post-proteus-message"
                            (Dict (HasAnnotation 'Remote "brig" "get-user-clients")
                             -> Dict (HasAnnotation 'Remote "galley" "on-message-sent")
                             -> Dict (HasAnnotation 'Remote "galley" "send-message")
                             -> QualifiedWithTag 'QLocal UserId
                             -> ConnId
                             -> Qualified ConvId
                             -> RawProto QualifiedNewOtrMessage
                             -> Handler
                                  (Either
                                     (MessageNotSent MessageSendingStatus) MessageSendingStatus))
                          :<|> Named
                                 "post-proteus-broadcast"
                                 (QualifiedWithTag 'QLocal UserId
                                  -> ConnId
                                  -> QualifiedNewOtrMessage
                                  -> Handler
                                       (Either
                                          (MessageNotSent MessageSendingStatus)
                                          MessageSendingStatus)))))
             :<|> ((Named
                      "post-bot-message-unqualified"
                      (Dict (HasAnnotation 'Remote "galley" "on-message-sent")
                       -> Dict (HasAnnotation 'Remote "brig" "get-user-clients")
                       -> BotId
                       -> ConvId
                       -> Maybe IgnoreMissing
                       -> Maybe ReportMissing
                       -> NewOtrMessage
                       -> Handler (PostOtrResponse ClientMismatch))
                    :<|> Named
                           "get-bot-conversation" (BotId -> ConvId -> Handler BotConvView))
                   :<|> ((Named
                            "create-non-binding-team"
                            (UserId -> ConnId -> NonBindingNewTeam -> Handler TeamId)
                          :<|> (Named
                                  "update-team"
                                  (UserId -> ConnId -> TeamId -> TeamUpdateData -> Handler ())
                                :<|> (Named "get-teams" (UserId -> Handler TeamList)
                                      :<|> (Named "get-team" (UserId -> TeamId -> Handler Team)
                                            :<|> Named
                                                   "delete-team"
                                                   (UserId
                                                    -> ConnId
                                                    -> TeamId
                                                    -> TeamDeleteData
                                                    -> Handler ())))))
                         :<|> ((Named
                                  '("get", SSOConfig)
                                  (UserId -> TeamId -> Handler (LockableFeature SSOConfig))
                                :<|> ((Named
                                         '("get", LegalholdConfig)
                                         (UserId
                                          -> TeamId -> Handler (LockableFeature LegalholdConfig))
                                       :<|> Named
                                              '("put", LegalholdConfig)
                                              (UserId
                                               -> TeamId
                                               -> Feature LegalholdConfig
                                               -> Handler (LockableFeature LegalholdConfig)))
                                      :<|> ((Named
                                               '("get", SearchVisibilityAvailableConfig)
                                               (UserId
                                                -> TeamId
                                                -> Handler
                                                     (LockableFeature
                                                        SearchVisibilityAvailableConfig))
                                             :<|> Named
                                                    '("put", SearchVisibilityAvailableConfig)
                                                    (UserId
                                                     -> TeamId
                                                     -> Feature SearchVisibilityAvailableConfig
                                                     -> Handler
                                                          (LockableFeature
                                                             SearchVisibilityAvailableConfig)))
                                            :<|> (Named
                                                    "get-search-visibility"
                                                    (QualifiedWithTag 'QLocal UserId
                                                     -> TeamId -> Handler TeamSearchVisibilityView)
                                                  :<|> (Named
                                                          "set-search-visibility"
                                                          (QualifiedWithTag 'QLocal UserId
                                                           -> TeamId
                                                           -> TeamSearchVisibilityView
                                                           -> Handler ())
                                                        :<|> (Named
                                                                '("get", ValidateSAMLEmailsConfig)
                                                                (UserId
                                                                 -> TeamId
                                                                 -> Handler
                                                                      (LockableFeature
                                                                         ValidateSAMLEmailsConfig))
                                                              :<|> (Named
                                                                      '("get",
                                                                        DigitalSignaturesConfig)
                                                                      (UserId
                                                                       -> TeamId
                                                                       -> Handler
                                                                            (LockableFeature
                                                                               DigitalSignaturesConfig))
                                                                    :<|> ((Named
                                                                             '("get", AppLockConfig)
                                                                             (UserId
                                                                              -> TeamId
                                                                              -> Handler
                                                                                   (LockableFeature
                                                                                      AppLockConfig))
                                                                           :<|> Named
                                                                                  '("put",
                                                                                    AppLockConfig)
                                                                                  (UserId
                                                                                   -> TeamId
                                                                                   -> Feature
                                                                                        AppLockConfig
                                                                                   -> Handler
                                                                                        (LockableFeature
                                                                                           AppLockConfig)))
                                                                          :<|> ((Named
                                                                                   '("get",
                                                                                     FileSharingConfig)
                                                                                   (UserId
                                                                                    -> TeamId
                                                                                    -> Handler
                                                                                         (LockableFeature
                                                                                            FileSharingConfig))
                                                                                 :<|> Named
                                                                                        '("put",
                                                                                          FileSharingConfig)
                                                                                        (UserId
                                                                                         -> TeamId
                                                                                         -> Feature
                                                                                              FileSharingConfig
                                                                                         -> Handler
                                                                                              (LockableFeature
                                                                                                 FileSharingConfig)))
                                                                                :<|> (Named
                                                                                        '("get",
                                                                                          ClassifiedDomainsConfig)
                                                                                        (UserId
                                                                                         -> TeamId
                                                                                         -> Handler
                                                                                              (LockableFeature
                                                                                                 ClassifiedDomainsConfig))
                                                                                      :<|> ((Named
                                                                                               '("get",
                                                                                                 ConferenceCallingConfig)
                                                                                               (UserId
                                                                                                -> TeamId
                                                                                                -> Handler
                                                                                                     (LockableFeature
                                                                                                        ConferenceCallingConfig))
                                                                                             :<|> Named
                                                                                                    '("put",
                                                                                                      ConferenceCallingConfig)
                                                                                                    (UserId
                                                                                                     -> TeamId
                                                                                                     -> Feature
                                                                                                          ConferenceCallingConfig
                                                                                                     -> Handler
                                                                                                          (LockableFeature
                                                                                                             ConferenceCallingConfig)))
                                                                                            :<|> ((Named
                                                                                                     '("get",
                                                                                                       SelfDeletingMessagesConfig)
                                                                                                     (UserId
                                                                                                      -> TeamId
                                                                                                      -> Handler
                                                                                                           (LockableFeature
                                                                                                              SelfDeletingMessagesConfig))
                                                                                                   :<|> Named
                                                                                                          '("put",
                                                                                                            SelfDeletingMessagesConfig)
                                                                                                          (UserId
                                                                                                           -> TeamId
                                                                                                           -> Feature
                                                                                                                SelfDeletingMessagesConfig
                                                                                                           -> Handler
                                                                                                                (LockableFeature
                                                                                                                   SelfDeletingMessagesConfig)))
                                                                                                  :<|> ((Named
                                                                                                           '("get",
                                                                                                             GuestLinksConfig)
                                                                                                           (UserId
                                                                                                            -> TeamId
                                                                                                            -> Handler
                                                                                                                 (LockableFeature
                                                                                                                    GuestLinksConfig))
                                                                                                         :<|> Named
                                                                                                                '("put",
                                                                                                                  GuestLinksConfig)
                                                                                                                (UserId
                                                                                                                 -> TeamId
                                                                                                                 -> Feature
                                                                                                                      GuestLinksConfig
                                                                                                                 -> Handler
                                                                                                                      (LockableFeature
                                                                                                                         GuestLinksConfig)))
                                                                                                        :<|> ((Named
                                                                                                                 '("get",
                                                                                                                   SndFactorPasswordChallengeConfig)
                                                                                                                 (UserId
                                                                                                                  -> TeamId
                                                                                                                  -> Handler
                                                                                                                       (LockableFeature
                                                                                                                          SndFactorPasswordChallengeConfig))
                                                                                                               :<|> Named
                                                                                                                      '("put",
                                                                                                                        SndFactorPasswordChallengeConfig)
                                                                                                                      (UserId
                                                                                                                       -> TeamId
                                                                                                                       -> Feature
                                                                                                                            SndFactorPasswordChallengeConfig
                                                                                                                       -> Handler
                                                                                                                            (LockableFeature
                                                                                                                               SndFactorPasswordChallengeConfig)))
                                                                                                              :<|> ((Named
                                                                                                                       '("get",
                                                                                                                         MLSConfig)
                                                                                                                       (UserId
                                                                                                                        -> TeamId
                                                                                                                        -> Handler
                                                                                                                             (LockableFeature
                                                                                                                                MLSConfig))
                                                                                                                     :<|> Named
                                                                                                                            '("put",
                                                                                                                              MLSConfig)
                                                                                                                            (UserId
                                                                                                                             -> TeamId
                                                                                                                             -> Feature
                                                                                                                                  MLSConfig
                                                                                                                             -> Handler
                                                                                                                                  (LockableFeature
                                                                                                                                     MLSConfig)))
                                                                                                                    :<|> ((Named
                                                                                                                             '("get",
                                                                                                                               ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                             (UserId
                                                                                                                              -> TeamId
                                                                                                                              -> Handler
                                                                                                                                   (LockableFeature
                                                                                                                                      ExposeInvitationURLsToTeamAdminConfig))
                                                                                                                           :<|> Named
                                                                                                                                  '("put",
                                                                                                                                    ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                  (UserId
                                                                                                                                   -> TeamId
                                                                                                                                   -> Feature
                                                                                                                                        ExposeInvitationURLsToTeamAdminConfig
                                                                                                                                   -> Handler
                                                                                                                                        (LockableFeature
                                                                                                                                           ExposeInvitationURLsToTeamAdminConfig)))
                                                                                                                          :<|> ((Named
                                                                                                                                   '("get",
                                                                                                                                     SearchVisibilityInboundConfig)
                                                                                                                                   (UserId
                                                                                                                                    -> TeamId
                                                                                                                                    -> Handler
                                                                                                                                         (LockableFeature
                                                                                                                                            SearchVisibilityInboundConfig))
                                                                                                                                 :<|> Named
                                                                                                                                        '("put",
                                                                                                                                          SearchVisibilityInboundConfig)
                                                                                                                                        (UserId
                                                                                                                                         -> TeamId
                                                                                                                                         -> Feature
                                                                                                                                              SearchVisibilityInboundConfig
                                                                                                                                         -> Handler
                                                                                                                                              (LockableFeature
                                                                                                                                                 SearchVisibilityInboundConfig)))
                                                                                                                                :<|> ((Named
                                                                                                                                         '("get",
                                                                                                                                           OutlookCalIntegrationConfig)
                                                                                                                                         (UserId
                                                                                                                                          -> TeamId
                                                                                                                                          -> Handler
                                                                                                                                               (LockableFeature
                                                                                                                                                  OutlookCalIntegrationConfig))
                                                                                                                                       :<|> Named
                                                                                                                                              '("put",
                                                                                                                                                OutlookCalIntegrationConfig)
                                                                                                                                              (UserId
                                                                                                                                               -> TeamId
                                                                                                                                               -> Feature
                                                                                                                                                    OutlookCalIntegrationConfig
                                                                                                                                               -> Handler
                                                                                                                                                    (LockableFeature
                                                                                                                                                       OutlookCalIntegrationConfig)))
                                                                                                                                      :<|> (Named
                                                                                                                                              '("get",
                                                                                                                                                MlsE2EIdConfig)
                                                                                                                                              (UserId
                                                                                                                                               -> TeamId
                                                                                                                                               -> Handler
                                                                                                                                                    (LockableFeature
                                                                                                                                                       MlsE2EIdConfig))
                                                                                                                                            :<|> (Named
                                                                                                                                                    "put-MlsE2EIdConfig@v5"
                                                                                                                                                    (UserId
                                                                                                                                                     -> TeamId
                                                                                                                                                     -> Feature
                                                                                                                                                          MlsE2EIdConfig
                                                                                                                                                     -> Handler
                                                                                                                                                          (LockableFeature
                                                                                                                                                             MlsE2EIdConfig))
                                                                                                                                                  :<|> (Named
                                                                                                                                                          '("put",
                                                                                                                                                            MlsE2EIdConfig)
                                                                                                                                                          (UserId
                                                                                                                                                           -> TeamId
                                                                                                                                                           -> Feature
                                                                                                                                                                MlsE2EIdConfig
                                                                                                                                                           -> Handler
                                                                                                                                                                (LockableFeature
                                                                                                                                                                   MlsE2EIdConfig))
                                                                                                                                                        :<|> ((Named
                                                                                                                                                                 '("get",
                                                                                                                                                                   MlsMigrationConfig)
                                                                                                                                                                 (UserId
                                                                                                                                                                  -> TeamId
                                                                                                                                                                  -> Handler
                                                                                                                                                                       (LockableFeature
                                                                                                                                                                          MlsMigrationConfig))
                                                                                                                                                               :<|> Named
                                                                                                                                                                      '("put",
                                                                                                                                                                        MlsMigrationConfig)
                                                                                                                                                                      (UserId
                                                                                                                                                                       -> TeamId
                                                                                                                                                                       -> Feature
                                                                                                                                                                            MlsMigrationConfig
                                                                                                                                                                       -> Handler
                                                                                                                                                                            (LockableFeature
                                                                                                                                                                               MlsMigrationConfig)))
                                                                                                                                                              :<|> ((Named
                                                                                                                                                                       '("get",
                                                                                                                                                                         EnforceFileDownloadLocationConfig)
                                                                                                                                                                       (UserId
                                                                                                                                                                        -> TeamId
                                                                                                                                                                        -> Handler
                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                EnforceFileDownloadLocationConfig))
                                                                                                                                                                     :<|> Named
                                                                                                                                                                            '("put",
                                                                                                                                                                              EnforceFileDownloadLocationConfig)
                                                                                                                                                                            (UserId
                                                                                                                                                                             -> TeamId
                                                                                                                                                                             -> Feature
                                                                                                                                                                                  EnforceFileDownloadLocationConfig
                                                                                                                                                                             -> Handler
                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                     EnforceFileDownloadLocationConfig)))
                                                                                                                                                                    :<|> (Named
                                                                                                                                                                            '("get",
                                                                                                                                                                              LimitedEventFanoutConfig)
                                                                                                                                                                            (UserId
                                                                                                                                                                             -> TeamId
                                                                                                                                                                             -> Handler
                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                     LimitedEventFanoutConfig))
                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                  "get-all-feature-configs-for-user"
                                                                                                                                                                                  (UserId
                                                                                                                                                                                   -> Handler
                                                                                                                                                                                        AllTeamFeatures)
                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                        "get-all-feature-configs-for-team"
                                                                                                                                                                                        (QualifiedWithTag
                                                                                                                                                                                           'QLocal
                                                                                                                                                                                           UserId
                                                                                                                                                                                         -> TeamId
                                                                                                                                                                                         -> Handler
                                                                                                                                                                                              AllTeamFeatures)
                                                                                                                                                                                      :<|> ((Named
                                                                                                                                                                                               '("get-deprecated",
                                                                                                                                                                                                 SearchVisibilityAvailableConfig)
                                                                                                                                                                                               (UserId
                                                                                                                                                                                                -> TeamId
                                                                                                                                                                                                -> Handler
                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                        SearchVisibilityAvailableConfig))
                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                     '("put-deprecated",
                                                                                                                                                                                                       SearchVisibilityAvailableConfig)
                                                                                                                                                                                                     (UserId
                                                                                                                                                                                                      -> TeamId
                                                                                                                                                                                                      -> Feature
                                                                                                                                                                                                           SearchVisibilityAvailableConfig
                                                                                                                                                                                                      -> Handler
                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                              SearchVisibilityAvailableConfig))
                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                           '("get-deprecated",
                                                                                                                                                                                                             ValidateSAMLEmailsConfig)
                                                                                                                                                                                                           (UserId
                                                                                                                                                                                                            -> TeamId
                                                                                                                                                                                                            -> Handler
                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                    ValidateSAMLEmailsConfig))
                                                                                                                                                                                                         :<|> Named
                                                                                                                                                                                                                '("get-deprecated",
                                                                                                                                                                                                                  DigitalSignaturesConfig)
                                                                                                                                                                                                                (UserId
                                                                                                                                                                                                                 -> TeamId
                                                                                                                                                                                                                 -> Handler
                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                         DigitalSignaturesConfig)))))
                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                    '("get-config",
                                                                                                                                                                                                      LegalholdConfig)
                                                                                                                                                                                                    (UserId
                                                                                                                                                                                                     -> Handler
                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                             LegalholdConfig))
                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                          '("get-config",
                                                                                                                                                                                                            SSOConfig)
                                                                                                                                                                                                          (UserId
                                                                                                                                                                                                           -> Handler
                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                   SSOConfig))
                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                '("get-config",
                                                                                                                                                                                                                  SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                (UserId
                                                                                                                                                                                                                 -> Handler
                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                         SearchVisibilityAvailableConfig))
                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                      '("get-config",
                                                                                                                                                                                                                        ValidateSAMLEmailsConfig)
                                                                                                                                                                                                                      (UserId
                                                                                                                                                                                                                       -> Handler
                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                               ValidateSAMLEmailsConfig))
                                                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                                                            '("get-config",
                                                                                                                                                                                                                              DigitalSignaturesConfig)
                                                                                                                                                                                                                            (UserId
                                                                                                                                                                                                                             -> Handler
                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                     DigitalSignaturesConfig))
                                                                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                                                                  '("get-config",
                                                                                                                                                                                                                                    AppLockConfig)
                                                                                                                                                                                                                                  (UserId
                                                                                                                                                                                                                                   -> Handler
                                                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                                                           AppLockConfig))
                                                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                                                        '("get-config",
                                                                                                                                                                                                                                          FileSharingConfig)
                                                                                                                                                                                                                                        (UserId
                                                                                                                                                                                                                                         -> Handler
                                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                                 FileSharingConfig))
                                                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                                                              '("get-config",
                                                                                                                                                                                                                                                ClassifiedDomainsConfig)
                                                                                                                                                                                                                                              (UserId
                                                                                                                                                                                                                                               -> Handler
                                                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                                                       ClassifiedDomainsConfig))
                                                                                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                                                                                    '("get-config",
                                                                                                                                                                                                                                                      ConferenceCallingConfig)
                                                                                                                                                                                                                                                    (UserId
                                                                                                                                                                                                                                                     -> Handler
                                                                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                                                                             ConferenceCallingConfig))
                                                                                                                                                                                                                                                  :<|> (Named
                                                                                                                                                                                                                                                          '("get-config",
                                                                                                                                                                                                                                                            SelfDeletingMessagesConfig)
                                                                                                                                                                                                                                                          (UserId
                                                                                                                                                                                                                                                           -> Handler
                                                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                                                   SelfDeletingMessagesConfig))
                                                                                                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                                                                                                '("get-config",
                                                                                                                                                                                                                                                                  GuestLinksConfig)
                                                                                                                                                                                                                                                                (UserId
                                                                                                                                                                                                                                                                 -> Handler
                                                                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                                                                         GuestLinksConfig))
                                                                                                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                                                                                                      '("get-config",
                                                                                                                                                                                                                                                                        SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                                                                                      (UserId
                                                                                                                                                                                                                                                                       -> Handler
                                                                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                                                                               SndFactorPasswordChallengeConfig))
                                                                                                                                                                                                                                                                    :<|> Named
                                                                                                                                                                                                                                                                           '("get-config",
                                                                                                                                                                                                                                                                             MLSConfig)
                                                                                                                                                                                                                                                                           (UserId
                                                                                                                                                                                                                                                                            -> Handler
                                                                                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                                                                                    MLSConfig)))))))))))))))))))))))))))))))))))))))))
                               :<|> ((Named
                                        "mls-message"
                                        (Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                                         -> Dict (HasAnnotation 'Remote "galley" "send-mls-message")
                                         -> Dict
                                              (HasAnnotation
                                                 'Remote "galley" "on-conversation-updated")
                                         -> Dict (HasAnnotation 'Remote "brig" "get-mls-clients")
                                         -> QualifiedWithTag 'QLocal UserId
                                         -> ClientId
                                         -> ConnId
                                         -> RawMLS Message
                                         -> Handler MLSMessageSendingStatus)
                                      :<|> (Named
                                              "mls-commit-bundle"
                                              (Dict
                                                 (HasAnnotation
                                                    'Remote "galley" "on-mls-message-sent")
                                               -> Dict
                                                    (HasAnnotation 'Remote "galley" "mls-welcome")
                                               -> Dict
                                                    (HasAnnotation
                                                       'Remote "galley" "send-mls-commit-bundle")
                                               -> Dict
                                                    (HasAnnotation
                                                       'Remote "galley" "on-conversation-updated")
                                               -> Dict
                                                    (HasAnnotation 'Remote "brig" "get-mls-clients")
                                               -> Dict
                                                    (HasAnnotation
                                                       'Remote "brig" "get-users-by-ids")
                                               -> Dict (HasAnnotation 'Remote "brig" "api-version")
                                               -> QualifiedWithTag 'QLocal UserId
                                               -> ClientId
                                               -> ConnId
                                               -> RawMLS CommitBundle
                                               -> Handler MLSMessageSendingStatus)
                                            :<|> Named
                                                   "mls-public-keys"
                                                   (QualifiedWithTag 'QLocal UserId
                                                    -> Maybe MLSPublicKeyFormat
                                                    -> Handler
                                                         (MLSKeysByPurpose (MLSKeys SomeKey)))))
                                     :<|> (Named
                                             "get-custom-backend-by-domain"
                                             (Domain -> Handler CustomBackend)
                                           :<|> ((Named
                                                    "create-legal-hold-settings"
                                                    (QualifiedWithTag 'QLocal UserId
                                                     -> TeamId
                                                     -> NewLegalHoldService
                                                     -> Handler ViewLegalHoldService)
                                                  :<|> (Named
                                                          "get-legal-hold-settings"
                                                          (QualifiedWithTag 'QLocal UserId
                                                           -> TeamId
                                                           -> Handler ViewLegalHoldService)
                                                        :<|> (Named
                                                                "delete-legal-hold-settings"
                                                                (Dict
                                                                   (HasAnnotation
                                                                      'Remote
                                                                      "galley"
                                                                      "on-conversation-updated")
                                                                 -> Dict
                                                                      (HasAnnotation
                                                                         'Remote
                                                                         "galley"
                                                                         "on-mls-message-sent")
                                                                 -> Dict
                                                                      (HasAnnotation
                                                                         'Remote
                                                                         "brig"
                                                                         "get-users-by-ids")
                                                                 -> QualifiedWithTag 'QLocal UserId
                                                                 -> TeamId
                                                                 -> RemoveLegalHoldSettingsRequest
                                                                 -> Handler ())
                                                              :<|> (Named
                                                                      "get-legal-hold"
                                                                      (QualifiedWithTag
                                                                         'QLocal UserId
                                                                       -> TeamId
                                                                       -> UserId
                                                                       -> Handler
                                                                            UserLegalHoldStatusResponse)
                                                                    :<|> (Named
                                                                            "consent-to-legal-hold"
                                                                            (Dict
                                                                               (HasAnnotation
                                                                                  'Remote
                                                                                  "galley"
                                                                                  "on-conversation-updated")
                                                                             -> Dict
                                                                                  (HasAnnotation
                                                                                     'Remote
                                                                                     "galley"
                                                                                     "on-mls-message-sent")
                                                                             -> Dict
                                                                                  (HasAnnotation
                                                                                     'Remote
                                                                                     "brig"
                                                                                     "get-users-by-ids")
                                                                             -> QualifiedWithTag
                                                                                  'QLocal UserId
                                                                             -> TeamId
                                                                             -> Handler
                                                                                  GrantConsentResult)
                                                                          :<|> (Named
                                                                                  "request-legal-hold-device"
                                                                                  (Dict
                                                                                     (HasAnnotation
                                                                                        'Remote
                                                                                        "galley"
                                                                                        "on-conversation-updated")
                                                                                   -> Dict
                                                                                        (HasAnnotation
                                                                                           'Remote
                                                                                           "galley"
                                                                                           "on-mls-message-sent")
                                                                                   -> Dict
                                                                                        (HasAnnotation
                                                                                           'Remote
                                                                                           "brig"
                                                                                           "get-users-by-ids")
                                                                                   -> QualifiedWithTag
                                                                                        'QLocal
                                                                                        UserId
                                                                                   -> TeamId
                                                                                   -> UserId
                                                                                   -> Handler
                                                                                        RequestDeviceResult)
                                                                                :<|> (Named
                                                                                        "disable-legal-hold-for-user"
                                                                                        (Dict
                                                                                           (HasAnnotation
                                                                                              'Remote
                                                                                              "galley"
                                                                                              "on-conversation-updated")
                                                                                         -> Dict
                                                                                              (HasAnnotation
                                                                                                 'Remote
                                                                                                 "galley"
                                                                                                 "on-mls-message-sent")
                                                                                         -> Dict
                                                                                              (HasAnnotation
                                                                                                 'Remote
                                                                                                 "brig"
                                                                                                 "get-users-by-ids")
                                                                                         -> QualifiedWithTag
                                                                                              'QLocal
                                                                                              UserId
                                                                                         -> TeamId
                                                                                         -> UserId
                                                                                         -> DisableLegalHoldForUserRequest
                                                                                         -> Handler
                                                                                              DisableLegalHoldForUserResponse)
                                                                                      :<|> Named
                                                                                             "approve-legal-hold-device"
                                                                                             (Dict
                                                                                                (HasAnnotation
                                                                                                   'Remote
                                                                                                   "galley"
                                                                                                   "on-conversation-updated")
                                                                                              -> Dict
                                                                                                   (HasAnnotation
                                                                                                      'Remote
                                                                                                      "galley"
                                                                                                      "on-mls-message-sent")
                                                                                              -> Dict
                                                                                                   (HasAnnotation
                                                                                                      'Remote
                                                                                                      "brig"
                                                                                                      "get-users-by-ids")
                                                                                              -> QualifiedWithTag
                                                                                                   'QLocal
                                                                                                   UserId
                                                                                              -> ConnId
                                                                                              -> TeamId
                                                                                              -> UserId
                                                                                              -> ApproveLegalHoldForUserRequest
                                                                                              -> Handler
                                                                                                   ()))))))))
                                                 :<|> ((Named
                                                          "get-team-members"
                                                          (QualifiedWithTag 'QLocal UserId
                                                           -> TeamId
                                                           -> Maybe
                                                                (Range 1 HardTruncationLimit Int32)
                                                           -> Maybe TeamMembersPagingState
                                                           -> Handler TeamMembersPage)
                                                        :<|> (Named
                                                                "get-team-member"
                                                                (QualifiedWithTag 'QLocal UserId
                                                                 -> TeamId
                                                                 -> UserId
                                                                 -> Handler TeamMemberOptPerms)
                                                              :<|> (Named
                                                                      "get-team-members-by-ids"
                                                                      (QualifiedWithTag
                                                                         'QLocal UserId
                                                                       -> TeamId
                                                                       -> Maybe
                                                                            (Range
                                                                               1
                                                                               HardTruncationLimit
                                                                               Int32)
                                                                       -> UserIdList
                                                                       -> Handler
                                                                            TeamMemberListOptPerms)
                                                                    :<|> (Named
                                                                            "add-team-member"
                                                                            (QualifiedWithTag
                                                                               'QLocal UserId
                                                                             -> ConnId
                                                                             -> TeamId
                                                                             -> NewTeamMember
                                                                             -> Handler ())
                                                                          :<|> (Named
                                                                                  "delete-team-member"
                                                                                  (QualifiedWithTag
                                                                                     'QLocal UserId
                                                                                   -> ConnId
                                                                                   -> TeamId
                                                                                   -> UserId
                                                                                   -> TeamMemberDeleteData
                                                                                   -> Handler
                                                                                        TeamMemberDeleteResult)
                                                                                :<|> (Named
                                                                                        "delete-non-binding-team-member"
                                                                                        (QualifiedWithTag
                                                                                           'QLocal
                                                                                           UserId
                                                                                         -> ConnId
                                                                                         -> TeamId
                                                                                         -> UserId
                                                                                         -> Handler
                                                                                              TeamMemberDeleteResult)
                                                                                      :<|> (Named
                                                                                              "update-team-member"
                                                                                              (QualifiedWithTag
                                                                                                 'QLocal
                                                                                                 UserId
                                                                                               -> ConnId
                                                                                               -> TeamId
                                                                                               -> NewTeamMember
                                                                                               -> Handler
                                                                                                    ())
                                                                                            :<|> Named
                                                                                                   "get-team-members-csv"
                                                                                                   (QualifiedWithTag
                                                                                                      'QLocal
                                                                                                      UserId
                                                                                                    -> TeamId
                                                                                                    -> Handler
                                                                                                         StreamingBody))))))))
                                                       :<|> Named
                                                              "get-team-notifications"
                                                              (UserId
                                                               -> Maybe NotificationId
                                                               -> Maybe (Range 1 10000 Int32)
                                                               -> Handler
                                                                    QueuedNotificationList)))))))))))
-> ((Named "status" (Handler ())
     :<|> (Named
             "delete-user"
             (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
              -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
              -> QualifiedWithTag 'QLocal UserId
              -> Maybe ConnId
              -> Handler ())
           :<|> (Named
                   "connect"
                   (Dict (HasAnnotation 'Remote "brig" "api-version")
                    -> Dict (HasAnnotation 'Remote "galley" "on-conversation-created")
                    -> Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                    -> QualifiedWithTag 'QLocal UserId
                    -> Maybe ConnId
                    -> Connect
                    -> Handler (ResponseForExistedCreated Conversation))
                 :<|> (Named
                         "get-conversation-clients" (GroupId -> Handler ClientList)
                       :<|> (Named
                               "guard-legalhold-policy-conflicts"
                               (GuardLegalholdPolicyConflicts -> Handler ())
                             :<|> ((TeamId
                                    -> Named "set-team-legalhold-whitelisted" (Handler ())
                                       :<|> (Named "unset-team-legalhold-whitelisted" (Handler ())
                                             :<|> Named
                                                    "get-team-legalhold-whitelisted"
                                                    (Handler Bool)))
                                   :<|> ((TeamId
                                          -> Named "get-team-internal" (Handler TeamData)
                                             :<|> (Named
                                                     "create-binding-team"
                                                     (UserId -> BindingNewTeam -> Handler TeamId)
                                                   :<|> (Named
                                                           "delete-binding-team"
                                                           (Bool -> Handler ())
                                                         :<|> (Named
                                                                 "get-team-name" (Handler TeamName)
                                                               :<|> (Named
                                                                       "update-team-status"
                                                                       (TeamStatusUpdate
                                                                        -> Handler ())
                                                                     :<|> ((Named
                                                                              "unchecked-add-team-member"
                                                                              (NewTeamMember
                                                                               -> Handler ())
                                                                            :<|> (Named
                                                                                    "unchecked-get-team-members"
                                                                                    (Maybe
                                                                                       (Range
                                                                                          1
                                                                                          HardTruncationLimit
                                                                                          Int32)
                                                                                     -> Handler
                                                                                          TeamMemberList)
                                                                                  :<|> (Named
                                                                                          "unchecked-get-team-member"
                                                                                          (UserId
                                                                                           -> Handler
                                                                                                TeamMember)
                                                                                        :<|> (Named
                                                                                                "can-user-join-team"
                                                                                                (Handler
                                                                                                   ())
                                                                                              :<|> Named
                                                                                                     "unchecked-update-team-member"
                                                                                                     (NewTeamMember
                                                                                                      -> Handler
                                                                                                           ())))))
                                                                           :<|> (Named
                                                                                   "user-is-team-owner"
                                                                                   (UserId
                                                                                    -> Handler ())
                                                                                 :<|> (Named
                                                                                         "get-search-visibility-internal"
                                                                                         (Handler
                                                                                            TeamSearchVisibilityView)
                                                                                       :<|> Named
                                                                                              "set-search-visibility-internal"
                                                                                              (TeamSearchVisibilityView
                                                                                               -> Handler
                                                                                                    ())))))))))
                                         :<|> ((Named
                                                  "get-team-members"
                                                  (UserId -> Handler TeamMemberList)
                                                :<|> (Named "get-team-id" (UserId -> Handler TeamId)
                                                      :<|> (Named
                                                              "test-get-clients"
                                                              (UserId -> Handler [ClientId])
                                                            :<|> (Named
                                                                    "test-add-client"
                                                                    (UserId
                                                                     -> ClientId -> Handler ())
                                                                  :<|> (Named
                                                                          "test-delete-client"
                                                                          (UserId
                                                                           -> ClientId
                                                                           -> Handler ())
                                                                        :<|> (Named
                                                                                "add-service"
                                                                                (Service
                                                                                 -> Handler ())
                                                                              :<|> (Named
                                                                                      "delete-service"
                                                                                      (ServiceRef
                                                                                       -> Handler
                                                                                            ())
                                                                                    :<|> (Named
                                                                                            "i-add-bot"
                                                                                            (QualifiedWithTag
                                                                                               'QLocal
                                                                                               UserId
                                                                                             -> ConnId
                                                                                             -> AddBot
                                                                                             -> Handler
                                                                                                  Event)
                                                                                          :<|> (Named
                                                                                                  "delete-bot"
                                                                                                  (QualifiedWithTag
                                                                                                     'QLocal
                                                                                                     UserId
                                                                                                   -> Maybe
                                                                                                        ConnId
                                                                                                   -> RemoveBot
                                                                                                   -> Handler
                                                                                                        (UpdateResult
                                                                                                           Event))
                                                                                                :<|> (Named
                                                                                                        "put-custom-backend"
                                                                                                        (Domain
                                                                                                         -> CustomBackend
                                                                                                         -> Handler
                                                                                                              ())
                                                                                                      :<|> Named
                                                                                                             "delete-custom-backend"
                                                                                                             (Domain
                                                                                                              -> Handler
                                                                                                                   ())))))))))))
                                               :<|> (Named
                                                       "upsert-one2one"
                                                       (UpsertOne2OneConversationRequest
                                                        -> Handler ())
                                                     :<|> ((((Named
                                                                '("iget", LegalholdConfig)
                                                                (TeamId
                                                                 -> Handler
                                                                      (LockableFeature
                                                                         LegalholdConfig))
                                                              :<|> (Named
                                                                      '("iput", LegalholdConfig)
                                                                      (TeamId
                                                                       -> Feature LegalholdConfig
                                                                       -> Handler
                                                                            (LockableFeature
                                                                               LegalholdConfig))
                                                                    :<|> Named
                                                                           '("ipatch",
                                                                             LegalholdConfig)
                                                                           (TeamId
                                                                            -> LockableFeaturePatch
                                                                                 LegalholdConfig
                                                                            -> Handler
                                                                                 (LockableFeature
                                                                                    LegalholdConfig))))
                                                             :<|> ((Named
                                                                      '("iget", SSOConfig)
                                                                      (TeamId
                                                                       -> Handler
                                                                            (LockableFeature
                                                                               SSOConfig))
                                                                    :<|> (Named
                                                                            '("iput", SSOConfig)
                                                                            (TeamId
                                                                             -> Feature SSOConfig
                                                                             -> Handler
                                                                                  (LockableFeature
                                                                                     SSOConfig))
                                                                          :<|> Named
                                                                                 '("ipatch",
                                                                                   SSOConfig)
                                                                                 (TeamId
                                                                                  -> LockableFeaturePatch
                                                                                       SSOConfig
                                                                                  -> Handler
                                                                                       (LockableFeature
                                                                                          SSOConfig))))
                                                                   :<|> ((Named
                                                                            '("iget",
                                                                              SearchVisibilityAvailableConfig)
                                                                            (TeamId
                                                                             -> Handler
                                                                                  (LockableFeature
                                                                                     SearchVisibilityAvailableConfig))
                                                                          :<|> (Named
                                                                                  '("iput",
                                                                                    SearchVisibilityAvailableConfig)
                                                                                  (TeamId
                                                                                   -> Feature
                                                                                        SearchVisibilityAvailableConfig
                                                                                   -> Handler
                                                                                        (LockableFeature
                                                                                           SearchVisibilityAvailableConfig))
                                                                                :<|> Named
                                                                                       '("ipatch",
                                                                                         SearchVisibilityAvailableConfig)
                                                                                       (TeamId
                                                                                        -> LockableFeaturePatch
                                                                                             SearchVisibilityAvailableConfig
                                                                                        -> Handler
                                                                                             (LockableFeature
                                                                                                SearchVisibilityAvailableConfig))))
                                                                         :<|> ((Named
                                                                                  '("iget",
                                                                                    SearchVisibilityInboundConfig)
                                                                                  (TeamId
                                                                                   -> Handler
                                                                                        (LockableFeature
                                                                                           SearchVisibilityInboundConfig))
                                                                                :<|> (Named
                                                                                        '("iput",
                                                                                          SearchVisibilityInboundConfig)
                                                                                        (TeamId
                                                                                         -> Feature
                                                                                              SearchVisibilityInboundConfig
                                                                                         -> Handler
                                                                                              (LockableFeature
                                                                                                 SearchVisibilityInboundConfig))
                                                                                      :<|> Named
                                                                                             '("ipatch",
                                                                                               SearchVisibilityInboundConfig)
                                                                                             (TeamId
                                                                                              -> LockableFeaturePatch
                                                                                                   SearchVisibilityInboundConfig
                                                                                              -> Handler
                                                                                                   (LockableFeature
                                                                                                      SearchVisibilityInboundConfig))))
                                                                               :<|> ((Named
                                                                                        '("iget",
                                                                                          ValidateSAMLEmailsConfig)
                                                                                        (TeamId
                                                                                         -> Handler
                                                                                              (LockableFeature
                                                                                                 ValidateSAMLEmailsConfig))
                                                                                      :<|> (Named
                                                                                              '("iput",
                                                                                                ValidateSAMLEmailsConfig)
                                                                                              (TeamId
                                                                                               -> Feature
                                                                                                    ValidateSAMLEmailsConfig
                                                                                               -> Handler
                                                                                                    (LockableFeature
                                                                                                       ValidateSAMLEmailsConfig))
                                                                                            :<|> Named
                                                                                                   '("ipatch",
                                                                                                     ValidateSAMLEmailsConfig)
                                                                                                   (TeamId
                                                                                                    -> LockableFeaturePatch
                                                                                                         ValidateSAMLEmailsConfig
                                                                                                    -> Handler
                                                                                                         (LockableFeature
                                                                                                            ValidateSAMLEmailsConfig))))
                                                                                     :<|> ((Named
                                                                                              '("iget",
                                                                                                DigitalSignaturesConfig)
                                                                                              (TeamId
                                                                                               -> Handler
                                                                                                    (LockableFeature
                                                                                                       DigitalSignaturesConfig))
                                                                                            :<|> (Named
                                                                                                    '("iput",
                                                                                                      DigitalSignaturesConfig)
                                                                                                    (TeamId
                                                                                                     -> Feature
                                                                                                          DigitalSignaturesConfig
                                                                                                     -> Handler
                                                                                                          (LockableFeature
                                                                                                             DigitalSignaturesConfig))
                                                                                                  :<|> Named
                                                                                                         '("ipatch",
                                                                                                           DigitalSignaturesConfig)
                                                                                                         (TeamId
                                                                                                          -> LockableFeaturePatch
                                                                                                               DigitalSignaturesConfig
                                                                                                          -> Handler
                                                                                                               (LockableFeature
                                                                                                                  DigitalSignaturesConfig))))
                                                                                           :<|> ((Named
                                                                                                    '("iget",
                                                                                                      AppLockConfig)
                                                                                                    (TeamId
                                                                                                     -> Handler
                                                                                                          (LockableFeature
                                                                                                             AppLockConfig))
                                                                                                  :<|> (Named
                                                                                                          '("iput",
                                                                                                            AppLockConfig)
                                                                                                          (TeamId
                                                                                                           -> Feature
                                                                                                                AppLockConfig
                                                                                                           -> Handler
                                                                                                                (LockableFeature
                                                                                                                   AppLockConfig))
                                                                                                        :<|> Named
                                                                                                               '("ipatch",
                                                                                                                 AppLockConfig)
                                                                                                               (TeamId
                                                                                                                -> LockableFeaturePatch
                                                                                                                     AppLockConfig
                                                                                                                -> Handler
                                                                                                                     (LockableFeature
                                                                                                                        AppLockConfig))))
                                                                                                 :<|> ((Named
                                                                                                          '("iget",
                                                                                                            FileSharingConfig)
                                                                                                          (TeamId
                                                                                                           -> Handler
                                                                                                                (LockableFeature
                                                                                                                   FileSharingConfig))
                                                                                                        :<|> (Named
                                                                                                                '("iput",
                                                                                                                  FileSharingConfig)
                                                                                                                (TeamId
                                                                                                                 -> Feature
                                                                                                                      FileSharingConfig
                                                                                                                 -> Handler
                                                                                                                      (LockableFeature
                                                                                                                         FileSharingConfig))
                                                                                                              :<|> Named
                                                                                                                     '("ipatch",
                                                                                                                       FileSharingConfig)
                                                                                                                     (TeamId
                                                                                                                      -> LockableFeaturePatch
                                                                                                                           FileSharingConfig
                                                                                                                      -> Handler
                                                                                                                           (LockableFeature
                                                                                                                              FileSharingConfig))))
                                                                                                       :<|> (Named
                                                                                                               '("iget",
                                                                                                                 ClassifiedDomainsConfig)
                                                                                                               (TeamId
                                                                                                                -> Handler
                                                                                                                     (LockableFeature
                                                                                                                        ClassifiedDomainsConfig))
                                                                                                             :<|> ((Named
                                                                                                                      '("iget",
                                                                                                                        ConferenceCallingConfig)
                                                                                                                      (TeamId
                                                                                                                       -> Handler
                                                                                                                            (LockableFeature
                                                                                                                               ConferenceCallingConfig))
                                                                                                                    :<|> (Named
                                                                                                                            '("iput",
                                                                                                                              ConferenceCallingConfig)
                                                                                                                            (TeamId
                                                                                                                             -> Feature
                                                                                                                                  ConferenceCallingConfig
                                                                                                                             -> Handler
                                                                                                                                  (LockableFeature
                                                                                                                                     ConferenceCallingConfig))
                                                                                                                          :<|> Named
                                                                                                                                 '("ipatch",
                                                                                                                                   ConferenceCallingConfig)
                                                                                                                                 (TeamId
                                                                                                                                  -> LockableFeaturePatch
                                                                                                                                       ConferenceCallingConfig
                                                                                                                                  -> Handler
                                                                                                                                       (LockableFeature
                                                                                                                                          ConferenceCallingConfig))))
                                                                                                                   :<|> ((Named
                                                                                                                            '("iget",
                                                                                                                              SelfDeletingMessagesConfig)
                                                                                                                            (TeamId
                                                                                                                             -> Handler
                                                                                                                                  (LockableFeature
                                                                                                                                     SelfDeletingMessagesConfig))
                                                                                                                          :<|> (Named
                                                                                                                                  '("iput",
                                                                                                                                    SelfDeletingMessagesConfig)
                                                                                                                                  (TeamId
                                                                                                                                   -> Feature
                                                                                                                                        SelfDeletingMessagesConfig
                                                                                                                                   -> Handler
                                                                                                                                        (LockableFeature
                                                                                                                                           SelfDeletingMessagesConfig))
                                                                                                                                :<|> Named
                                                                                                                                       '("ipatch",
                                                                                                                                         SelfDeletingMessagesConfig)
                                                                                                                                       (TeamId
                                                                                                                                        -> LockableFeaturePatch
                                                                                                                                             SelfDeletingMessagesConfig
                                                                                                                                        -> Handler
                                                                                                                                             (LockableFeature
                                                                                                                                                SelfDeletingMessagesConfig))))
                                                                                                                         :<|> ((Named
                                                                                                                                  '("iget",
                                                                                                                                    GuestLinksConfig)
                                                                                                                                  (TeamId
                                                                                                                                   -> Handler
                                                                                                                                        (LockableFeature
                                                                                                                                           GuestLinksConfig))
                                                                                                                                :<|> (Named
                                                                                                                                        '("iput",
                                                                                                                                          GuestLinksConfig)
                                                                                                                                        (TeamId
                                                                                                                                         -> Feature
                                                                                                                                              GuestLinksConfig
                                                                                                                                         -> Handler
                                                                                                                                              (LockableFeature
                                                                                                                                                 GuestLinksConfig))
                                                                                                                                      :<|> Named
                                                                                                                                             '("ipatch",
                                                                                                                                               GuestLinksConfig)
                                                                                                                                             (TeamId
                                                                                                                                              -> LockableFeaturePatch
                                                                                                                                                   GuestLinksConfig
                                                                                                                                              -> Handler
                                                                                                                                                   (LockableFeature
                                                                                                                                                      GuestLinksConfig))))
                                                                                                                               :<|> ((Named
                                                                                                                                        '("iget",
                                                                                                                                          SndFactorPasswordChallengeConfig)
                                                                                                                                        (TeamId
                                                                                                                                         -> Handler
                                                                                                                                              (LockableFeature
                                                                                                                                                 SndFactorPasswordChallengeConfig))
                                                                                                                                      :<|> (Named
                                                                                                                                              '("iput",
                                                                                                                                                SndFactorPasswordChallengeConfig)
                                                                                                                                              (TeamId
                                                                                                                                               -> Feature
                                                                                                                                                    SndFactorPasswordChallengeConfig
                                                                                                                                               -> Handler
                                                                                                                                                    (LockableFeature
                                                                                                                                                       SndFactorPasswordChallengeConfig))
                                                                                                                                            :<|> Named
                                                                                                                                                   '("ipatch",
                                                                                                                                                     SndFactorPasswordChallengeConfig)
                                                                                                                                                   (TeamId
                                                                                                                                                    -> LockableFeaturePatch
                                                                                                                                                         SndFactorPasswordChallengeConfig
                                                                                                                                                    -> Handler
                                                                                                                                                         (LockableFeature
                                                                                                                                                            SndFactorPasswordChallengeConfig))))
                                                                                                                                     :<|> ((Named
                                                                                                                                              '("iget",
                                                                                                                                                MLSConfig)
                                                                                                                                              (TeamId
                                                                                                                                               -> Handler
                                                                                                                                                    (LockableFeature
                                                                                                                                                       MLSConfig))
                                                                                                                                            :<|> (Named
                                                                                                                                                    '("iput",
                                                                                                                                                      MLSConfig)
                                                                                                                                                    (TeamId
                                                                                                                                                     -> Feature
                                                                                                                                                          MLSConfig
                                                                                                                                                     -> Handler
                                                                                                                                                          (LockableFeature
                                                                                                                                                             MLSConfig))
                                                                                                                                                  :<|> Named
                                                                                                                                                         '("ipatch",
                                                                                                                                                           MLSConfig)
                                                                                                                                                         (TeamId
                                                                                                                                                          -> LockableFeaturePatch
                                                                                                                                                               MLSConfig
                                                                                                                                                          -> Handler
                                                                                                                                                               (LockableFeature
                                                                                                                                                                  MLSConfig))))
                                                                                                                                           :<|> ((Named
                                                                                                                                                    '("iget",
                                                                                                                                                      ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                    (TeamId
                                                                                                                                                     -> Handler
                                                                                                                                                          (LockableFeature
                                                                                                                                                             ExposeInvitationURLsToTeamAdminConfig))
                                                                                                                                                  :<|> (Named
                                                                                                                                                          '("iput",
                                                                                                                                                            ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                          (TeamId
                                                                                                                                                           -> Feature
                                                                                                                                                                ExposeInvitationURLsToTeamAdminConfig
                                                                                                                                                           -> Handler
                                                                                                                                                                (LockableFeature
                                                                                                                                                                   ExposeInvitationURLsToTeamAdminConfig))
                                                                                                                                                        :<|> Named
                                                                                                                                                               '("ipatch",
                                                                                                                                                                 ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                               (TeamId
                                                                                                                                                                -> LockableFeaturePatch
                                                                                                                                                                     ExposeInvitationURLsToTeamAdminConfig
                                                                                                                                                                -> Handler
                                                                                                                                                                     (LockableFeature
                                                                                                                                                                        ExposeInvitationURLsToTeamAdminConfig))))
                                                                                                                                                 :<|> ((Named
                                                                                                                                                          '("iget",
                                                                                                                                                            OutlookCalIntegrationConfig)
                                                                                                                                                          (TeamId
                                                                                                                                                           -> Handler
                                                                                                                                                                (LockableFeature
                                                                                                                                                                   OutlookCalIntegrationConfig))
                                                                                                                                                        :<|> (Named
                                                                                                                                                                '("iput",
                                                                                                                                                                  OutlookCalIntegrationConfig)
                                                                                                                                                                (TeamId
                                                                                                                                                                 -> Feature
                                                                                                                                                                      OutlookCalIntegrationConfig
                                                                                                                                                                 -> Handler
                                                                                                                                                                      (LockableFeature
                                                                                                                                                                         OutlookCalIntegrationConfig))
                                                                                                                                                              :<|> Named
                                                                                                                                                                     '("ipatch",
                                                                                                                                                                       OutlookCalIntegrationConfig)
                                                                                                                                                                     (TeamId
                                                                                                                                                                      -> LockableFeaturePatch
                                                                                                                                                                           OutlookCalIntegrationConfig
                                                                                                                                                                      -> Handler
                                                                                                                                                                           (LockableFeature
                                                                                                                                                                              OutlookCalIntegrationConfig))))
                                                                                                                                                       :<|> ((Named
                                                                                                                                                                '("iget",
                                                                                                                                                                  MlsE2EIdConfig)
                                                                                                                                                                (TeamId
                                                                                                                                                                 -> Handler
                                                                                                                                                                      (LockableFeature
                                                                                                                                                                         MlsE2EIdConfig))
                                                                                                                                                              :<|> (Named
                                                                                                                                                                      '("iput",
                                                                                                                                                                        MlsE2EIdConfig)
                                                                                                                                                                      (TeamId
                                                                                                                                                                       -> Feature
                                                                                                                                                                            MlsE2EIdConfig
                                                                                                                                                                       -> Handler
                                                                                                                                                                            (LockableFeature
                                                                                                                                                                               MlsE2EIdConfig))
                                                                                                                                                                    :<|> Named
                                                                                                                                                                           '("ipatch",
                                                                                                                                                                             MlsE2EIdConfig)
                                                                                                                                                                           (TeamId
                                                                                                                                                                            -> LockableFeaturePatch
                                                                                                                                                                                 MlsE2EIdConfig
                                                                                                                                                                            -> Handler
                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                    MlsE2EIdConfig))))
                                                                                                                                                             :<|> ((Named
                                                                                                                                                                      '("iget",
                                                                                                                                                                        MlsMigrationConfig)
                                                                                                                                                                      (TeamId
                                                                                                                                                                       -> Handler
                                                                                                                                                                            (LockableFeature
                                                                                                                                                                               MlsMigrationConfig))
                                                                                                                                                                    :<|> (Named
                                                                                                                                                                            '("iput",
                                                                                                                                                                              MlsMigrationConfig)
                                                                                                                                                                            (TeamId
                                                                                                                                                                             -> Feature
                                                                                                                                                                                  MlsMigrationConfig
                                                                                                                                                                             -> Handler
                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                     MlsMigrationConfig))
                                                                                                                                                                          :<|> Named
                                                                                                                                                                                 '("ipatch",
                                                                                                                                                                                   MlsMigrationConfig)
                                                                                                                                                                                 (TeamId
                                                                                                                                                                                  -> LockableFeaturePatch
                                                                                                                                                                                       MlsMigrationConfig
                                                                                                                                                                                  -> Handler
                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                          MlsMigrationConfig))))
                                                                                                                                                                   :<|> ((Named
                                                                                                                                                                            '("iget",
                                                                                                                                                                              EnforceFileDownloadLocationConfig)
                                                                                                                                                                            (TeamId
                                                                                                                                                                             -> Handler
                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                     EnforceFileDownloadLocationConfig))
                                                                                                                                                                          :<|> (Named
                                                                                                                                                                                  '("iput",
                                                                                                                                                                                    EnforceFileDownloadLocationConfig)
                                                                                                                                                                                  (TeamId
                                                                                                                                                                                   -> Feature
                                                                                                                                                                                        EnforceFileDownloadLocationConfig
                                                                                                                                                                                   -> Handler
                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                           EnforceFileDownloadLocationConfig))
                                                                                                                                                                                :<|> Named
                                                                                                                                                                                       '("ipatch",
                                                                                                                                                                                         EnforceFileDownloadLocationConfig)
                                                                                                                                                                                       (TeamId
                                                                                                                                                                                        -> LockableFeaturePatch
                                                                                                                                                                                             EnforceFileDownloadLocationConfig
                                                                                                                                                                                        -> Handler
                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                EnforceFileDownloadLocationConfig))))
                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                 '("iget",
                                                                                                                                                                                   LimitedEventFanoutConfig)
                                                                                                                                                                                 (TeamId
                                                                                                                                                                                  -> Handler
                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                          LimitedEventFanoutConfig))
                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                       '("iput",
                                                                                                                                                                                         LimitedEventFanoutConfig)
                                                                                                                                                                                       (TeamId
                                                                                                                                                                                        -> Feature
                                                                                                                                                                                             LimitedEventFanoutConfig
                                                                                                                                                                                        -> Handler
                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                LimitedEventFanoutConfig))
                                                                                                                                                                                     :<|> Named
                                                                                                                                                                                            '("ipatch",
                                                                                                                                                                                              LimitedEventFanoutConfig)
                                                                                                                                                                                            (TeamId
                                                                                                                                                                                             -> LockableFeaturePatch
                                                                                                                                                                                                  LimitedEventFanoutConfig
                                                                                                                                                                                             -> Handler
                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                     LimitedEventFanoutConfig)))))))))))))))))))))))
                                                            :<|> (Named
                                                                    '("ilock", FileSharingConfig)
                                                                    (TeamId
                                                                     -> LockStatus
                                                                     -> Handler LockStatusResponse)
                                                                  :<|> (Named
                                                                          '("ilock",
                                                                            ConferenceCallingConfig)
                                                                          (TeamId
                                                                           -> LockStatus
                                                                           -> Handler
                                                                                LockStatusResponse)
                                                                        :<|> (Named
                                                                                '("ilock",
                                                                                  SelfDeletingMessagesConfig)
                                                                                (TeamId
                                                                                 -> LockStatus
                                                                                 -> Handler
                                                                                      LockStatusResponse)
                                                                              :<|> (Named
                                                                                      '("ilock",
                                                                                        GuestLinksConfig)
                                                                                      (TeamId
                                                                                       -> LockStatus
                                                                                       -> Handler
                                                                                            LockStatusResponse)
                                                                                    :<|> (Named
                                                                                            '("ilock",
                                                                                              SndFactorPasswordChallengeConfig)
                                                                                            (TeamId
                                                                                             -> LockStatus
                                                                                             -> Handler
                                                                                                  LockStatusResponse)
                                                                                          :<|> (Named
                                                                                                  '("ilock",
                                                                                                    MLSConfig)
                                                                                                  (TeamId
                                                                                                   -> LockStatus
                                                                                                   -> Handler
                                                                                                        LockStatusResponse)
                                                                                                :<|> (Named
                                                                                                        '("ilock",
                                                                                                          OutlookCalIntegrationConfig)
                                                                                                        (TeamId
                                                                                                         -> LockStatus
                                                                                                         -> Handler
                                                                                                              LockStatusResponse)
                                                                                                      :<|> (Named
                                                                                                              '("ilock",
                                                                                                                MlsE2EIdConfig)
                                                                                                              (TeamId
                                                                                                               -> LockStatus
                                                                                                               -> Handler
                                                                                                                    LockStatusResponse)
                                                                                                            :<|> (Named
                                                                                                                    '("ilock",
                                                                                                                      MlsMigrationConfig)
                                                                                                                    (TeamId
                                                                                                                     -> LockStatus
                                                                                                                     -> Handler
                                                                                                                          LockStatusResponse)
                                                                                                                  :<|> (Named
                                                                                                                          '("ilock",
                                                                                                                            EnforceFileDownloadLocationConfig)
                                                                                                                          (TeamId
                                                                                                                           -> LockStatus
                                                                                                                           -> Handler
                                                                                                                                LockStatusResponse)
                                                                                                                        :<|> (Named
                                                                                                                                '("igetmulti",
                                                                                                                                  SearchVisibilityInboundConfig)
                                                                                                                                (TeamFeatureNoConfigMultiRequest
                                                                                                                                 -> Handler
                                                                                                                                      (TeamFeatureNoConfigMultiResponse
                                                                                                                                         SearchVisibilityInboundConfig))
                                                                                                                              :<|> Named
                                                                                                                                     "feature-configs-internal"
                                                                                                                                     (Maybe
                                                                                                                                        UserId
                                                                                                                                      -> Handler
                                                                                                                                           AllTeamFeatures)))))))))))))
                                                           :<|> (Named
                                                                   "get-federation-status"
                                                                   (QualifiedWithTag 'QLocal UserId
                                                                    -> RemoteDomains
                                                                    -> Handler FederationStatus)
                                                                 :<|> ((Named
                                                                          "conversation-get-member"
                                                                          (ConvId
                                                                           -> UserId
                                                                           -> Handler
                                                                                (Maybe Member))
                                                                        :<|> (Named
                                                                                "conversation-accept-v2"
                                                                                (QualifiedWithTag
                                                                                   'QLocal UserId
                                                                                 -> Maybe ConnId
                                                                                 -> ConvId
                                                                                 -> Handler
                                                                                      Conversation)
                                                                              :<|> (Named
                                                                                      "conversation-block-unqualified"
                                                                                      (UserId
                                                                                       -> ConvId
                                                                                       -> Handler
                                                                                            ())
                                                                                    :<|> (Named
                                                                                            "conversation-block"
                                                                                            (QualifiedWithTag
                                                                                               'QLocal
                                                                                               UserId
                                                                                             -> Qualified
                                                                                                  ConvId
                                                                                             -> Handler
                                                                                                  ())
                                                                                          :<|> (Named
                                                                                                  "conversation-unblock-unqualified"
                                                                                                  (QualifiedWithTag
                                                                                                     'QLocal
                                                                                                     UserId
                                                                                                   -> Maybe
                                                                                                        ConnId
                                                                                                   -> ConvId
                                                                                                   -> Handler
                                                                                                        Conversation)
                                                                                                :<|> (Named
                                                                                                        "conversation-unblock"
                                                                                                        (QualifiedWithTag
                                                                                                           'QLocal
                                                                                                           UserId
                                                                                                         -> Maybe
                                                                                                              ConnId
                                                                                                         -> Qualified
                                                                                                              ConvId
                                                                                                         -> Handler
                                                                                                              ())
                                                                                                      :<|> (Named
                                                                                                              "conversation-meta"
                                                                                                              (ConvId
                                                                                                               -> Handler
                                                                                                                    ConversationMetadata)
                                                                                                            :<|> (Named
                                                                                                                    "conversation-mls-one-to-one"
                                                                                                                    (QualifiedWithTag
                                                                                                                       'QLocal
                                                                                                                       UserId
                                                                                                                     -> Qualified
                                                                                                                          UserId
                                                                                                                     -> Handler
                                                                                                                          Conversation)
                                                                                                                  :<|> Named
                                                                                                                         "conversation-mls-one-to-one-established"
                                                                                                                         (QualifiedWithTag
                                                                                                                            'QLocal
                                                                                                                            UserId
                                                                                                                          -> Qualified
                                                                                                                               UserId
                                                                                                                          -> Handler
                                                                                                                               Bool)))))))))
                                                                       :<|> Named
                                                                              "get-conversations-by-user"
                                                                              (UserId
                                                                               -> Handler
                                                                                    [EJPDConvInfo])))))))))))))
    :<|> ((Named
             "on-conversation-created"
             (Domain -> ConversationCreated ConvId -> Handler EmptyResponse)
           :<|> (Named
                   "get-conversations@v1"
                   (Domain
                    -> GetConversationsRequest -> Handler GetConversationsResponse)
                 :<|> (Named
                         "get-conversations"
                         (Domain
                          -> GetConversationsRequest -> Handler GetConversationsResponseV2)
                       :<|> (Named
                               "leave-conversation"
                               (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                                -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                                -> Dict (HasAnnotation 'Remote "brig" "get-users-by-ids")
                                -> Dict (HasAnnotation 'Remote "brig" "api-version")
                                -> Domain
                                -> LeaveConversationRequest
                                -> Handler LeaveConversationResponse)
                             :<|> (Named
                                     "send-message"
                                     (Dict (HasAnnotation 'Remote "galley" "on-message-sent")
                                      -> Dict (HasAnnotation 'Remote "brig" "get-user-clients")
                                      -> Domain
                                      -> ProteusMessageSendRequest
                                      -> Handler MessageSendResponse)
                                   :<|> (Named
                                           "update-conversation"
                                           (Dict
                                              (HasAnnotation
                                                 'Remote "galley" "on-conversation-updated")
                                            -> Dict
                                                 (HasAnnotation
                                                    'Remote "galley" "on-mls-message-sent")
                                            -> Dict
                                                 (HasAnnotation 'Remote "brig" "get-users-by-ids")
                                            -> Dict
                                                 (HasAnnotation
                                                    'Remote "galley" "on-mls-message-sent")
                                            -> Domain
                                            -> ConversationUpdateRequest
                                            -> Handler ConversationUpdateResponse)
                                         :<|> (Named
                                                 "mls-welcome"
                                                 (Domain
                                                  -> MLSWelcomeRequest
                                                  -> Handler MLSWelcomeResponse)
                                               :<|> (Named
                                                       "send-mls-message"
                                                       (Dict
                                                          (HasAnnotation
                                                             'Remote
                                                             "galley"
                                                             "on-conversation-updated")
                                                        -> Dict
                                                             (HasAnnotation
                                                                'Remote
                                                                "galley"
                                                                "on-mls-message-sent")
                                                        -> Dict
                                                             (HasAnnotation
                                                                'Remote "galley" "send-mls-message")
                                                        -> Dict
                                                             (HasAnnotation
                                                                'Remote "brig" "get-mls-clients")
                                                        -> Domain
                                                        -> MLSMessageSendRequest
                                                        -> Handler MLSMessageResponse)
                                                     :<|> (Named
                                                             "send-mls-commit-bundle"
                                                             (Dict
                                                                (HasAnnotation
                                                                   'Remote "galley" "mls-welcome")
                                                              -> Dict
                                                                   (HasAnnotation
                                                                      'Remote
                                                                      "galley"
                                                                      "on-conversation-updated")
                                                              -> Dict
                                                                   (HasAnnotation
                                                                      'Remote
                                                                      "galley"
                                                                      "on-mls-message-sent")
                                                              -> Dict
                                                                   (HasAnnotation
                                                                      'Remote
                                                                      "galley"
                                                                      "send-mls-commit-bundle")
                                                              -> Dict
                                                                   (HasAnnotation
                                                                      'Remote
                                                                      "brig"
                                                                      "get-mls-clients")
                                                              -> Dict
                                                                   (HasAnnotation
                                                                      'Remote
                                                                      "brig"
                                                                      "get-users-by-ids")
                                                              -> Dict
                                                                   (HasAnnotation
                                                                      'Remote "brig" "api-version")
                                                              -> Domain
                                                              -> MLSMessageSendRequest
                                                              -> Handler MLSMessageResponse)
                                                           :<|> (Named
                                                                   "query-group-info"
                                                                   (Domain
                                                                    -> GetGroupInfoRequest
                                                                    -> Handler GetGroupInfoResponse)
                                                                 :<|> (Named
                                                                         "update-typing-indicator"
                                                                         (Dict
                                                                            (HasAnnotation
                                                                               'Remote
                                                                               "galley"
                                                                               "on-typing-indicator-updated")
                                                                          -> Domain
                                                                          -> TypingDataUpdateRequest
                                                                          -> Handler
                                                                               TypingDataUpdateResponse)
                                                                       :<|> (Named
                                                                               "on-typing-indicator-updated"
                                                                               (Domain
                                                                                -> TypingDataUpdated
                                                                                -> Handler
                                                                                     EmptyResponse)
                                                                             :<|> (Named
                                                                                     "get-sub-conversation"
                                                                                     (Domain
                                                                                      -> GetSubConversationsRequest
                                                                                      -> Handler
                                                                                           GetSubConversationsResponse)
                                                                                   :<|> (Named
                                                                                           "delete-sub-conversation"
                                                                                           (Domain
                                                                                            -> DeleteSubConversationFedRequest
                                                                                            -> Handler
                                                                                                 DeleteSubConversationResponse)
                                                                                         :<|> (Named
                                                                                                 "leave-sub-conversation"
                                                                                                 (Dict
                                                                                                    (HasAnnotation
                                                                                                       'Remote
                                                                                                       "galley"
                                                                                                       "on-mls-message-sent")
                                                                                                  -> Domain
                                                                                                  -> LeaveSubConversationRequest
                                                                                                  -> Handler
                                                                                                       LeaveSubConversationResponse)
                                                                                               :<|> (Named
                                                                                                       "get-one2one-conversation@v1"
                                                                                                       (Domain
                                                                                                        -> GetOne2OneConversationRequest
                                                                                                        -> Handler
                                                                                                             GetOne2OneConversationResponse)
                                                                                                     :<|> (Named
                                                                                                             "get-one2one-conversation"
                                                                                                             (Domain
                                                                                                              -> GetOne2OneConversationRequest
                                                                                                              -> Handler
                                                                                                                   GetOne2OneConversationResponseV2)
                                                                                                           :<|> (Named
                                                                                                                   "on-client-removed"
                                                                                                                   (Domain
                                                                                                                    -> ClientRemovedRequest
                                                                                                                    -> Handler
                                                                                                                         EmptyResponse)
                                                                                                                 :<|> (Named
                                                                                                                         "on-message-sent"
                                                                                                                         (Domain
                                                                                                                          -> RemoteMessage
                                                                                                                               ConvId
                                                                                                                          -> Handler
                                                                                                                               EmptyResponse)
                                                                                                                       :<|> (Named
                                                                                                                               "on-mls-message-sent"
                                                                                                                               (Domain
                                                                                                                                -> RemoteMLSMessage
                                                                                                                                -> Handler
                                                                                                                                     EmptyResponse)
                                                                                                                             :<|> (Named
                                                                                                                                     (Versioned
                                                                                                                                        'V0
                                                                                                                                        "on-conversation-updated")
                                                                                                                                     (Domain
                                                                                                                                      -> ConversationUpdateV0
                                                                                                                                      -> Handler
                                                                                                                                           EmptyResponse)
                                                                                                                                   :<|> (Named
                                                                                                                                           "on-conversation-updated"
                                                                                                                                           (Domain
                                                                                                                                            -> ConversationUpdate
                                                                                                                                            -> Handler
                                                                                                                                                 EmptyResponse)
                                                                                                                                         :<|> Named
                                                                                                                                                "on-user-deleted-conversations"
                                                                                                                                                (Domain
                                                                                                                                                 -> UserDeletedConversationsNotification
                                                                                                                                                 -> Handler
                                                                                                                                                      EmptyResponse)))))))))))))))))))))))
          :<|> Tagged Handler Application))
-> ((Named
       "get-unqualified-conversation"
       (QualifiedWithTag 'QLocal UserId -> ConvId -> Handler Conversation)
     :<|> (Named
             "get-unqualified-conversation-legalhold-alias"
             (QualifiedWithTag 'QLocal UserId -> ConvId -> Handler Conversation)
           :<|> (Named
                   "get-conversation@v2"
                   (Dict (HasAnnotation 'Remote "galley" "get-conversations")
                    -> QualifiedWithTag 'QLocal UserId
                    -> Qualified ConvId
                    -> Handler Conversation)
                 :<|> (Named
                         "get-conversation@v5"
                         (Dict (HasAnnotation 'Remote "galley" "get-conversations")
                          -> QualifiedWithTag 'QLocal UserId
                          -> Qualified ConvId
                          -> Handler Conversation)
                       :<|> (Named
                               "get-conversation"
                               (Dict (HasAnnotation 'Remote "galley" "get-conversations")
                                -> QualifiedWithTag 'QLocal UserId
                                -> Qualified ConvId
                                -> Handler Conversation)
                             :<|> (Named
                                     "get-conversation-roles"
                                     (QualifiedWithTag 'QLocal UserId
                                      -> ConvId -> Handler ConversationRolesList)
                                   :<|> (Named
                                           "get-group-info"
                                           (Dict (HasAnnotation 'Remote "galley" "query-group-info")
                                            -> QualifiedWithTag 'QLocal UserId
                                            -> Qualified ConvId
                                            -> Handler GroupInfoData)
                                         :<|> (Named
                                                 "list-conversation-ids-unqualified"
                                                 (QualifiedWithTag 'QLocal UserId
                                                  -> Maybe ConvId
                                                  -> Maybe (Range 1 1000 Int32)
                                                  -> Handler (ConversationList ConvId))
                                               :<|> (Named
                                                       "list-conversation-ids-v2"
                                                       (QualifiedWithTag 'QLocal UserId
                                                        -> GetPaginatedConversationIds
                                                        -> Handler ConvIdsPage)
                                                     :<|> (Named
                                                             "list-conversation-ids"
                                                             (QualifiedWithTag 'QLocal UserId
                                                              -> GetPaginatedConversationIds
                                                              -> Handler ConvIdsPage)
                                                           :<|> (Named
                                                                   "get-conversations"
                                                                   (QualifiedWithTag 'QLocal UserId
                                                                    -> Maybe
                                                                         (Range
                                                                            1
                                                                            32
                                                                            (CommaSeparatedList
                                                                               ConvId))
                                                                    -> Maybe ConvId
                                                                    -> Maybe (Range 1 500 Int32)
                                                                    -> Handler
                                                                         (ConversationList
                                                                            Conversation))
                                                                 :<|> (Named
                                                                         "list-conversations@v1"
                                                                         (Dict
                                                                            (HasAnnotation
                                                                               'Remote
                                                                               "galley"
                                                                               "get-conversations")
                                                                          -> QualifiedWithTag
                                                                               'QLocal UserId
                                                                          -> ListConversations
                                                                          -> Handler
                                                                               ConversationsResponse)
                                                                       :<|> (Named
                                                                               "list-conversations@v2"
                                                                               (Dict
                                                                                  (HasAnnotation
                                                                                     'Remote
                                                                                     "galley"
                                                                                     "get-conversations")
                                                                                -> QualifiedWithTag
                                                                                     'QLocal UserId
                                                                                -> ListConversations
                                                                                -> Handler
                                                                                     ConversationsResponse)
                                                                             :<|> (Named
                                                                                     "list-conversations@v5"
                                                                                     (Dict
                                                                                        (HasAnnotation
                                                                                           'Remote
                                                                                           "galley"
                                                                                           "get-conversations")
                                                                                      -> QualifiedWithTag
                                                                                           'QLocal
                                                                                           UserId
                                                                                      -> ListConversations
                                                                                      -> Handler
                                                                                           ConversationsResponse)
                                                                                   :<|> (Named
                                                                                           "list-conversations"
                                                                                           (Dict
                                                                                              (HasAnnotation
                                                                                                 'Remote
                                                                                                 "galley"
                                                                                                 "get-conversations")
                                                                                            -> QualifiedWithTag
                                                                                                 'QLocal
                                                                                                 UserId
                                                                                            -> ListConversations
                                                                                            -> Handler
                                                                                                 ConversationsResponse)
                                                                                         :<|> (Named
                                                                                                 "get-conversation-by-reusable-code"
                                                                                                 (QualifiedWithTag
                                                                                                    'QLocal
                                                                                                    UserId
                                                                                                  -> Key
                                                                                                  -> Value
                                                                                                  -> Handler
                                                                                                       ConversationCoverView)
                                                                                               :<|> (Named
                                                                                                       "create-group-conversation@v2"
                                                                                                       (Dict
                                                                                                          (HasAnnotation
                                                                                                             'Remote
                                                                                                             "brig"
                                                                                                             "api-version")
                                                                                                        -> Dict
                                                                                                             (HasAnnotation
                                                                                                                'Remote
                                                                                                                "galley"
                                                                                                                "on-conversation-created")
                                                                                                        -> Dict
                                                                                                             (HasAnnotation
                                                                                                                'Remote
                                                                                                                "galley"
                                                                                                                "on-conversation-updated")
                                                                                                        -> QualifiedWithTag
                                                                                                             'QLocal
                                                                                                             UserId
                                                                                                        -> Maybe
                                                                                                             ConnId
                                                                                                        -> NewConv
                                                                                                        -> Handler
                                                                                                             (ResponseForExistedCreated
                                                                                                                Conversation))
                                                                                                     :<|> (Named
                                                                                                             "create-group-conversation@v3"
                                                                                                             (Dict
                                                                                                                (HasAnnotation
                                                                                                                   'Remote
                                                                                                                   "brig"
                                                                                                                   "api-version")
                                                                                                              -> Dict
                                                                                                                   (HasAnnotation
                                                                                                                      'Remote
                                                                                                                      "galley"
                                                                                                                      "on-conversation-created")
                                                                                                              -> Dict
                                                                                                                   (HasAnnotation
                                                                                                                      'Remote
                                                                                                                      "galley"
                                                                                                                      "on-conversation-updated")
                                                                                                              -> QualifiedWithTag
                                                                                                                   'QLocal
                                                                                                                   UserId
                                                                                                              -> Maybe
                                                                                                                   ConnId
                                                                                                              -> NewConv
                                                                                                              -> Handler
                                                                                                                   (ResponseForExistedCreated
                                                                                                                      Conversation))
                                                                                                           :<|> (Named
                                                                                                                   "create-group-conversation@v5"
                                                                                                                   (Dict
                                                                                                                      (HasAnnotation
                                                                                                                         'Remote
                                                                                                                         "brig"
                                                                                                                         "api-version")
                                                                                                                    -> Dict
                                                                                                                         (HasAnnotation
                                                                                                                            'Remote
                                                                                                                            "brig"
                                                                                                                            "get-not-fully-connected-backends")
                                                                                                                    -> Dict
                                                                                                                         (HasAnnotation
                                                                                                                            'Remote
                                                                                                                            "galley"
                                                                                                                            "on-conversation-created")
                                                                                                                    -> Dict
                                                                                                                         (HasAnnotation
                                                                                                                            'Remote
                                                                                                                            "galley"
                                                                                                                            "on-conversation-updated")
                                                                                                                    -> QualifiedWithTag
                                                                                                                         'QLocal
                                                                                                                         UserId
                                                                                                                    -> Maybe
                                                                                                                         ConnId
                                                                                                                    -> NewConv
                                                                                                                    -> Handler
                                                                                                                         CreateGroupConversationResponse)
                                                                                                                 :<|> (Named
                                                                                                                         "create-group-conversation"
                                                                                                                         (Dict
                                                                                                                            (HasAnnotation
                                                                                                                               'Remote
                                                                                                                               "brig"
                                                                                                                               "api-version")
                                                                                                                          -> Dict
                                                                                                                               (HasAnnotation
                                                                                                                                  'Remote
                                                                                                                                  "brig"
                                                                                                                                  "get-not-fully-connected-backends")
                                                                                                                          -> Dict
                                                                                                                               (HasAnnotation
                                                                                                                                  'Remote
                                                                                                                                  "galley"
                                                                                                                                  "on-conversation-created")
                                                                                                                          -> Dict
                                                                                                                               (HasAnnotation
                                                                                                                                  'Remote
                                                                                                                                  "galley"
                                                                                                                                  "on-conversation-updated")
                                                                                                                          -> QualifiedWithTag
                                                                                                                               'QLocal
                                                                                                                               UserId
                                                                                                                          -> Maybe
                                                                                                                               ConnId
                                                                                                                          -> NewConv
                                                                                                                          -> Handler
                                                                                                                               CreateGroupConversationResponse)
                                                                                                                       :<|> (Named
                                                                                                                               "create-self-conversation@v2"
                                                                                                                               (QualifiedWithTag
                                                                                                                                  'QLocal
                                                                                                                                  UserId
                                                                                                                                -> Handler
                                                                                                                                     (ResponseForExistedCreated
                                                                                                                                        Conversation))
                                                                                                                             :<|> (Named
                                                                                                                                     "create-self-conversation@v5"
                                                                                                                                     (QualifiedWithTag
                                                                                                                                        'QLocal
                                                                                                                                        UserId
                                                                                                                                      -> Handler
                                                                                                                                           (ResponseForExistedCreated
                                                                                                                                              Conversation))
                                                                                                                                   :<|> (Named
                                                                                                                                           "create-self-conversation"
                                                                                                                                           (QualifiedWithTag
                                                                                                                                              'QLocal
                                                                                                                                              UserId
                                                                                                                                            -> Handler
                                                                                                                                                 (ResponseForExistedCreated
                                                                                                                                                    Conversation))
                                                                                                                                         :<|> (Named
                                                                                                                                                 "get-mls-self-conversation@v5"
                                                                                                                                                 (QualifiedWithTag
                                                                                                                                                    'QLocal
                                                                                                                                                    UserId
                                                                                                                                                  -> Handler
                                                                                                                                                       Conversation)
                                                                                                                                               :<|> (Named
                                                                                                                                                       "get-mls-self-conversation"
                                                                                                                                                       (QualifiedWithTag
                                                                                                                                                          'QLocal
                                                                                                                                                          UserId
                                                                                                                                                        -> Handler
                                                                                                                                                             Conversation)
                                                                                                                                                     :<|> (Named
                                                                                                                                                             "get-subconversation"
                                                                                                                                                             (Dict
                                                                                                                                                                (HasAnnotation
                                                                                                                                                                   'Remote
                                                                                                                                                                   "galley"
                                                                                                                                                                   "get-sub-conversation")
                                                                                                                                                              -> QualifiedWithTag
                                                                                                                                                                   'QLocal
                                                                                                                                                                   UserId
                                                                                                                                                              -> Qualified
                                                                                                                                                                   ConvId
                                                                                                                                                              -> SubConvId
                                                                                                                                                              -> Handler
                                                                                                                                                                   PublicSubConversation)
                                                                                                                                                           :<|> (Named
                                                                                                                                                                   "leave-subconversation"
                                                                                                                                                                   (Dict
                                                                                                                                                                      (HasAnnotation
                                                                                                                                                                         'Remote
                                                                                                                                                                         "galley"
                                                                                                                                                                         "on-mls-message-sent")
                                                                                                                                                                    -> Dict
                                                                                                                                                                         (HasAnnotation
                                                                                                                                                                            'Remote
                                                                                                                                                                            "galley"
                                                                                                                                                                            "leave-sub-conversation")
                                                                                                                                                                    -> QualifiedWithTag
                                                                                                                                                                         'QLocal
                                                                                                                                                                         UserId
                                                                                                                                                                    -> ClientId
                                                                                                                                                                    -> Qualified
                                                                                                                                                                         ConvId
                                                                                                                                                                    -> SubConvId
                                                                                                                                                                    -> Handler
                                                                                                                                                                         ())
                                                                                                                                                                 :<|> (Named
                                                                                                                                                                         "delete-subconversation"
                                                                                                                                                                         (Dict
                                                                                                                                                                            (HasAnnotation
                                                                                                                                                                               'Remote
                                                                                                                                                                               "galley"
                                                                                                                                                                               "delete-sub-conversation")
                                                                                                                                                                          -> QualifiedWithTag
                                                                                                                                                                               'QLocal
                                                                                                                                                                               UserId
                                                                                                                                                                          -> Qualified
                                                                                                                                                                               ConvId
                                                                                                                                                                          -> SubConvId
                                                                                                                                                                          -> DeleteSubConversationRequest
                                                                                                                                                                          -> Handler
                                                                                                                                                                               ())
                                                                                                                                                                       :<|> (Named
                                                                                                                                                                               "get-subconversation-group-info"
                                                                                                                                                                               (Dict
                                                                                                                                                                                  (HasAnnotation
                                                                                                                                                                                     'Remote
                                                                                                                                                                                     "galley"
                                                                                                                                                                                     "query-group-info")
                                                                                                                                                                                -> QualifiedWithTag
                                                                                                                                                                                     'QLocal
                                                                                                                                                                                     UserId
                                                                                                                                                                                -> Qualified
                                                                                                                                                                                     ConvId
                                                                                                                                                                                -> SubConvId
                                                                                                                                                                                -> Handler
                                                                                                                                                                                     GroupInfoData)
                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                     "create-one-to-one-conversation@v2"
                                                                                                                                                                                     (Dict
                                                                                                                                                                                        (HasAnnotation
                                                                                                                                                                                           'Remote
                                                                                                                                                                                           "brig"
                                                                                                                                                                                           "api-version")
                                                                                                                                                                                      -> Dict
                                                                                                                                                                                           (HasAnnotation
                                                                                                                                                                                              'Remote
                                                                                                                                                                                              "galley"
                                                                                                                                                                                              "on-conversation-created")
                                                                                                                                                                                      -> QualifiedWithTag
                                                                                                                                                                                           'QLocal
                                                                                                                                                                                           UserId
                                                                                                                                                                                      -> ConnId
                                                                                                                                                                                      -> NewConv
                                                                                                                                                                                      -> Handler
                                                                                                                                                                                           (ResponseForExistedCreated
                                                                                                                                                                                              Conversation))
                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                           "create-one-to-one-conversation"
                                                                                                                                                                                           (Dict
                                                                                                                                                                                              (HasAnnotation
                                                                                                                                                                                                 'Remote
                                                                                                                                                                                                 "galley"
                                                                                                                                                                                                 "on-conversation-created")
                                                                                                                                                                                            -> QualifiedWithTag
                                                                                                                                                                                                 'QLocal
                                                                                                                                                                                                 UserId
                                                                                                                                                                                            -> ConnId
                                                                                                                                                                                            -> NewConv
                                                                                                                                                                                            -> Handler
                                                                                                                                                                                                 (ResponseForExistedCreated
                                                                                                                                                                                                    Conversation))
                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                 "get-one-to-one-mls-conversation@v5"
                                                                                                                                                                                                 (QualifiedWithTag
                                                                                                                                                                                                    'QLocal
                                                                                                                                                                                                    UserId
                                                                                                                                                                                                  -> Qualified
                                                                                                                                                                                                       UserId
                                                                                                                                                                                                  -> Handler
                                                                                                                                                                                                       Conversation)
                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                       "get-one-to-one-mls-conversation@v6"
                                                                                                                                                                                                       (QualifiedWithTag
                                                                                                                                                                                                          'QLocal
                                                                                                                                                                                                          UserId
                                                                                                                                                                                                        -> Qualified
                                                                                                                                                                                                             UserId
                                                                                                                                                                                                        -> Handler
                                                                                                                                                                                                             (MLSOne2OneConversation
                                                                                                                                                                                                                MLSPublicKey))
                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                             "get-one-to-one-mls-conversation"
                                                                                                                                                                                                             (QualifiedWithTag
                                                                                                                                                                                                                'QLocal
                                                                                                                                                                                                                UserId
                                                                                                                                                                                                              -> Qualified
                                                                                                                                                                                                                   UserId
                                                                                                                                                                                                              -> Maybe
                                                                                                                                                                                                                   MLSPublicKeyFormat
                                                                                                                                                                                                              -> Handler
                                                                                                                                                                                                                   (MLSOne2OneConversation
                                                                                                                                                                                                                      SomeKey))
                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                   "add-members-to-conversation-unqualified"
                                                                                                                                                                                                                   (Dict
                                                                                                                                                                                                                      (HasAnnotation
                                                                                                                                                                                                                         'Remote
                                                                                                                                                                                                                         "galley"
                                                                                                                                                                                                                         "on-conversation-updated")
                                                                                                                                                                                                                    -> Dict
                                                                                                                                                                                                                         (HasAnnotation
                                                                                                                                                                                                                            'Remote
                                                                                                                                                                                                                            "galley"
                                                                                                                                                                                                                            "on-mls-message-sent")
                                                                                                                                                                                                                    -> QualifiedWithTag
                                                                                                                                                                                                                         'QLocal
                                                                                                                                                                                                                         UserId
                                                                                                                                                                                                                    -> ConnId
                                                                                                                                                                                                                    -> ConvId
                                                                                                                                                                                                                    -> Invite
                                                                                                                                                                                                                    -> Handler
                                                                                                                                                                                                                         (UpdateResult
                                                                                                                                                                                                                            Event))
                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                         "add-members-to-conversation-unqualified2"
                                                                                                                                                                                                                         (Dict
                                                                                                                                                                                                                            (HasAnnotation
                                                                                                                                                                                                                               'Remote
                                                                                                                                                                                                                               "galley"
                                                                                                                                                                                                                               "on-conversation-updated")
                                                                                                                                                                                                                          -> Dict
                                                                                                                                                                                                                               (HasAnnotation
                                                                                                                                                                                                                                  'Remote
                                                                                                                                                                                                                                  "galley"
                                                                                                                                                                                                                                  "on-mls-message-sent")
                                                                                                                                                                                                                          -> QualifiedWithTag
                                                                                                                                                                                                                               'QLocal
                                                                                                                                                                                                                               UserId
                                                                                                                                                                                                                          -> ConnId
                                                                                                                                                                                                                          -> ConvId
                                                                                                                                                                                                                          -> InviteQualified
                                                                                                                                                                                                                          -> Handler
                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                  Event))
                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                               "add-members-to-conversation"
                                                                                                                                                                                                                               (Dict
                                                                                                                                                                                                                                  (HasAnnotation
                                                                                                                                                                                                                                     'Remote
                                                                                                                                                                                                                                     "galley"
                                                                                                                                                                                                                                     "on-conversation-updated")
                                                                                                                                                                                                                                -> Dict
                                                                                                                                                                                                                                     (HasAnnotation
                                                                                                                                                                                                                                        'Remote
                                                                                                                                                                                                                                        "galley"
                                                                                                                                                                                                                                        "on-mls-message-sent")
                                                                                                                                                                                                                                -> QualifiedWithTag
                                                                                                                                                                                                                                     'QLocal
                                                                                                                                                                                                                                     UserId
                                                                                                                                                                                                                                -> ConnId
                                                                                                                                                                                                                                -> Qualified
                                                                                                                                                                                                                                     ConvId
                                                                                                                                                                                                                                -> InviteQualified
                                                                                                                                                                                                                                -> Handler
                                                                                                                                                                                                                                     (UpdateResult
                                                                                                                                                                                                                                        Event))
                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                     "join-conversation-by-id-unqualified"
                                                                                                                                                                                                                                     (Dict
                                                                                                                                                                                                                                        (HasAnnotation
                                                                                                                                                                                                                                           'Remote
                                                                                                                                                                                                                                           "galley"
                                                                                                                                                                                                                                           "on-conversation-updated")
                                                                                                                                                                                                                                      -> QualifiedWithTag
                                                                                                                                                                                                                                           'QLocal
                                                                                                                                                                                                                                           UserId
                                                                                                                                                                                                                                      -> ConnId
                                                                                                                                                                                                                                      -> ConvId
                                                                                                                                                                                                                                      -> Handler
                                                                                                                                                                                                                                           (UpdateResult
                                                                                                                                                                                                                                              Event))
                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                           "join-conversation-by-code-unqualified"
                                                                                                                                                                                                                                           (Dict
                                                                                                                                                                                                                                              (HasAnnotation
                                                                                                                                                                                                                                                 'Remote
                                                                                                                                                                                                                                                 "galley"
                                                                                                                                                                                                                                                 "on-conversation-updated")
                                                                                                                                                                                                                                            -> QualifiedWithTag
                                                                                                                                                                                                                                                 'QLocal
                                                                                                                                                                                                                                                 UserId
                                                                                                                                                                                                                                            -> ConnId
                                                                                                                                                                                                                                            -> JoinConversationByCode
                                                                                                                                                                                                                                            -> Handler
                                                                                                                                                                                                                                                 (UpdateResult
                                                                                                                                                                                                                                                    Event))
                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                 "code-check"
                                                                                                                                                                                                                                                 (ConversationCode
                                                                                                                                                                                                                                                  -> Handler
                                                                                                                                                                                                                                                       ())
                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                       "create-conversation-code-unqualified@v3"
                                                                                                                                                                                                                                                       (UserId
                                                                                                                                                                                                                                                        -> Maybe
                                                                                                                                                                                                                                                             Text
                                                                                                                                                                                                                                                        -> Maybe
                                                                                                                                                                                                                                                             ConnId
                                                                                                                                                                                                                                                        -> ConvId
                                                                                                                                                                                                                                                        -> Handler
                                                                                                                                                                                                                                                             AddCodeResult)
                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                             "create-conversation-code-unqualified"
                                                                                                                                                                                                                                                             (UserId
                                                                                                                                                                                                                                                              -> Maybe
                                                                                                                                                                                                                                                                   Text
                                                                                                                                                                                                                                                              -> Maybe
                                                                                                                                                                                                                                                                   ConnId
                                                                                                                                                                                                                                                              -> ConvId
                                                                                                                                                                                                                                                              -> CreateConversationCodeRequest
                                                                                                                                                                                                                                                              -> Handler
                                                                                                                                                                                                                                                                   AddCodeResult)
                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                   "get-conversation-guest-links-status"
                                                                                                                                                                                                                                                                   (UserId
                                                                                                                                                                                                                                                                    -> ConvId
                                                                                                                                                                                                                                                                    -> Handler
                                                                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                                                                            GuestLinksConfig))
                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                         "remove-code-unqualified"
                                                                                                                                                                                                                                                                         (QualifiedWithTag
                                                                                                                                                                                                                                                                            'QLocal
                                                                                                                                                                                                                                                                            UserId
                                                                                                                                                                                                                                                                          -> ConnId
                                                                                                                                                                                                                                                                          -> ConvId
                                                                                                                                                                                                                                                                          -> Handler
                                                                                                                                                                                                                                                                               Event)
                                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                                               "get-code"
                                                                                                                                                                                                                                                                               (Maybe
                                                                                                                                                                                                                                                                                  Text
                                                                                                                                                                                                                                                                                -> QualifiedWithTag
                                                                                                                                                                                                                                                                                     'QLocal
                                                                                                                                                                                                                                                                                     UserId
                                                                                                                                                                                                                                                                                -> ConvId
                                                                                                                                                                                                                                                                                -> Handler
                                                                                                                                                                                                                                                                                     ConversationCodeInfo)
                                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                                     "member-typing-unqualified"
                                                                                                                                                                                                                                                                                     (Dict
                                                                                                                                                                                                                                                                                        (HasAnnotation
                                                                                                                                                                                                                                                                                           'Remote
                                                                                                                                                                                                                                                                                           "galley"
                                                                                                                                                                                                                                                                                           "update-typing-indicator")
                                                                                                                                                                                                                                                                                      -> Dict
                                                                                                                                                                                                                                                                                           (HasAnnotation
                                                                                                                                                                                                                                                                                              'Remote
                                                                                                                                                                                                                                                                                              "galley"
                                                                                                                                                                                                                                                                                              "on-typing-indicator-updated")
                                                                                                                                                                                                                                                                                      -> QualifiedWithTag
                                                                                                                                                                                                                                                                                           'QLocal
                                                                                                                                                                                                                                                                                           UserId
                                                                                                                                                                                                                                                                                      -> ConnId
                                                                                                                                                                                                                                                                                      -> ConvId
                                                                                                                                                                                                                                                                                      -> TypingStatus
                                                                                                                                                                                                                                                                                      -> Handler
                                                                                                                                                                                                                                                                                           ())
                                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                                           "member-typing-qualified"
                                                                                                                                                                                                                                                                                           (Dict
                                                                                                                                                                                                                                                                                              (HasAnnotation
                                                                                                                                                                                                                                                                                                 'Remote
                                                                                                                                                                                                                                                                                                 "galley"
                                                                                                                                                                                                                                                                                                 "update-typing-indicator")
                                                                                                                                                                                                                                                                                            -> Dict
                                                                                                                                                                                                                                                                                                 (HasAnnotation
                                                                                                                                                                                                                                                                                                    'Remote
                                                                                                                                                                                                                                                                                                    "galley"
                                                                                                                                                                                                                                                                                                    "on-typing-indicator-updated")
                                                                                                                                                                                                                                                                                            -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                 'QLocal
                                                                                                                                                                                                                                                                                                 UserId
                                                                                                                                                                                                                                                                                            -> ConnId
                                                                                                                                                                                                                                                                                            -> Qualified
                                                                                                                                                                                                                                                                                                 ConvId
                                                                                                                                                                                                                                                                                            -> TypingStatus
                                                                                                                                                                                                                                                                                            -> Handler
                                                                                                                                                                                                                                                                                                 ())
                                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                                 "remove-member-unqualified"
                                                                                                                                                                                                                                                                                                 (Dict
                                                                                                                                                                                                                                                                                                    (HasAnnotation
                                                                                                                                                                                                                                                                                                       'Remote
                                                                                                                                                                                                                                                                                                       "galley"
                                                                                                                                                                                                                                                                                                       "leave-conversation")
                                                                                                                                                                                                                                                                                                  -> Dict
                                                                                                                                                                                                                                                                                                       (HasAnnotation
                                                                                                                                                                                                                                                                                                          'Remote
                                                                                                                                                                                                                                                                                                          "galley"
                                                                                                                                                                                                                                                                                                          "on-conversation-updated")
                                                                                                                                                                                                                                                                                                  -> Dict
                                                                                                                                                                                                                                                                                                       (HasAnnotation
                                                                                                                                                                                                                                                                                                          'Remote
                                                                                                                                                                                                                                                                                                          "galley"
                                                                                                                                                                                                                                                                                                          "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                  -> Dict
                                                                                                                                                                                                                                                                                                       (HasAnnotation
                                                                                                                                                                                                                                                                                                          'Remote
                                                                                                                                                                                                                                                                                                          "brig"
                                                                                                                                                                                                                                                                                                          "get-users-by-ids")
                                                                                                                                                                                                                                                                                                  -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                       'QLocal
                                                                                                                                                                                                                                                                                                       UserId
                                                                                                                                                                                                                                                                                                  -> ConnId
                                                                                                                                                                                                                                                                                                  -> ConvId
                                                                                                                                                                                                                                                                                                  -> UserId
                                                                                                                                                                                                                                                                                                  -> Handler
                                                                                                                                                                                                                                                                                                       (Maybe
                                                                                                                                                                                                                                                                                                          Event))
                                                                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                                                                       "remove-member"
                                                                                                                                                                                                                                                                                                       (Dict
                                                                                                                                                                                                                                                                                                          (HasAnnotation
                                                                                                                                                                                                                                                                                                             'Remote
                                                                                                                                                                                                                                                                                                             "galley"
                                                                                                                                                                                                                                                                                                             "leave-conversation")
                                                                                                                                                                                                                                                                                                        -> Dict
                                                                                                                                                                                                                                                                                                             (HasAnnotation
                                                                                                                                                                                                                                                                                                                'Remote
                                                                                                                                                                                                                                                                                                                "galley"
                                                                                                                                                                                                                                                                                                                "on-conversation-updated")
                                                                                                                                                                                                                                                                                                        -> Dict
                                                                                                                                                                                                                                                                                                             (HasAnnotation
                                                                                                                                                                                                                                                                                                                'Remote
                                                                                                                                                                                                                                                                                                                "galley"
                                                                                                                                                                                                                                                                                                                "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                        -> Dict
                                                                                                                                                                                                                                                                                                             (HasAnnotation
                                                                                                                                                                                                                                                                                                                'Remote
                                                                                                                                                                                                                                                                                                                "brig"
                                                                                                                                                                                                                                                                                                                "get-users-by-ids")
                                                                                                                                                                                                                                                                                                        -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                             'QLocal
                                                                                                                                                                                                                                                                                                             UserId
                                                                                                                                                                                                                                                                                                        -> ConnId
                                                                                                                                                                                                                                                                                                        -> Qualified
                                                                                                                                                                                                                                                                                                             ConvId
                                                                                                                                                                                                                                                                                                        -> Qualified
                                                                                                                                                                                                                                                                                                             UserId
                                                                                                                                                                                                                                                                                                        -> Handler
                                                                                                                                                                                                                                                                                                             (Maybe
                                                                                                                                                                                                                                                                                                                Event))
                                                                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                                                                             "update-other-member-unqualified"
                                                                                                                                                                                                                                                                                                             (Dict
                                                                                                                                                                                                                                                                                                                (HasAnnotation
                                                                                                                                                                                                                                                                                                                   'Remote
                                                                                                                                                                                                                                                                                                                   "galley"
                                                                                                                                                                                                                                                                                                                   "on-conversation-updated")
                                                                                                                                                                                                                                                                                                              -> Dict
                                                                                                                                                                                                                                                                                                                   (HasAnnotation
                                                                                                                                                                                                                                                                                                                      'Remote
                                                                                                                                                                                                                                                                                                                      "galley"
                                                                                                                                                                                                                                                                                                                      "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                              -> Dict
                                                                                                                                                                                                                                                                                                                   (HasAnnotation
                                                                                                                                                                                                                                                                                                                      'Remote
                                                                                                                                                                                                                                                                                                                      "brig"
                                                                                                                                                                                                                                                                                                                      "get-users-by-ids")
                                                                                                                                                                                                                                                                                                              -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                   'QLocal
                                                                                                                                                                                                                                                                                                                   UserId
                                                                                                                                                                                                                                                                                                              -> ConnId
                                                                                                                                                                                                                                                                                                              -> ConvId
                                                                                                                                                                                                                                                                                                              -> UserId
                                                                                                                                                                                                                                                                                                              -> OtherMemberUpdate
                                                                                                                                                                                                                                                                                                              -> Handler
                                                                                                                                                                                                                                                                                                                   ())
                                                                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                                                                   "update-other-member"
                                                                                                                                                                                                                                                                                                                   (Dict
                                                                                                                                                                                                                                                                                                                      (HasAnnotation
                                                                                                                                                                                                                                                                                                                         'Remote
                                                                                                                                                                                                                                                                                                                         "galley"
                                                                                                                                                                                                                                                                                                                         "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                    -> Dict
                                                                                                                                                                                                                                                                                                                         (HasAnnotation
                                                                                                                                                                                                                                                                                                                            'Remote
                                                                                                                                                                                                                                                                                                                            "galley"
                                                                                                                                                                                                                                                                                                                            "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                    -> Dict
                                                                                                                                                                                                                                                                                                                         (HasAnnotation
                                                                                                                                                                                                                                                                                                                            'Remote
                                                                                                                                                                                                                                                                                                                            "brig"
                                                                                                                                                                                                                                                                                                                            "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                    -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                         'QLocal
                                                                                                                                                                                                                                                                                                                         UserId
                                                                                                                                                                                                                                                                                                                    -> ConnId
                                                                                                                                                                                                                                                                                                                    -> Qualified
                                                                                                                                                                                                                                                                                                                         ConvId
                                                                                                                                                                                                                                                                                                                    -> Qualified
                                                                                                                                                                                                                                                                                                                         UserId
                                                                                                                                                                                                                                                                                                                    -> OtherMemberUpdate
                                                                                                                                                                                                                                                                                                                    -> Handler
                                                                                                                                                                                                                                                                                                                         ())
                                                                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                                                                         "update-conversation-name-deprecated"
                                                                                                                                                                                                                                                                                                                         (Dict
                                                                                                                                                                                                                                                                                                                            (HasAnnotation
                                                                                                                                                                                                                                                                                                                               'Remote
                                                                                                                                                                                                                                                                                                                               "galley"
                                                                                                                                                                                                                                                                                                                               "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                          -> Dict
                                                                                                                                                                                                                                                                                                                               (HasAnnotation
                                                                                                                                                                                                                                                                                                                                  'Remote
                                                                                                                                                                                                                                                                                                                                  "galley"
                                                                                                                                                                                                                                                                                                                                  "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                          -> Dict
                                                                                                                                                                                                                                                                                                                               (HasAnnotation
                                                                                                                                                                                                                                                                                                                                  'Remote
                                                                                                                                                                                                                                                                                                                                  "brig"
                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                          -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                               'QLocal
                                                                                                                                                                                                                                                                                                                               UserId
                                                                                                                                                                                                                                                                                                                          -> ConnId
                                                                                                                                                                                                                                                                                                                          -> ConvId
                                                                                                                                                                                                                                                                                                                          -> ConversationRename
                                                                                                                                                                                                                                                                                                                          -> Handler
                                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                                  Event))
                                                                                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                                                                                               "update-conversation-name-unqualified"
                                                                                                                                                                                                                                                                                                                               (Dict
                                                                                                                                                                                                                                                                                                                                  (HasAnnotation
                                                                                                                                                                                                                                                                                                                                     'Remote
                                                                                                                                                                                                                                                                                                                                     "galley"
                                                                                                                                                                                                                                                                                                                                     "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                -> Dict
                                                                                                                                                                                                                                                                                                                                     (HasAnnotation
                                                                                                                                                                                                                                                                                                                                        'Remote
                                                                                                                                                                                                                                                                                                                                        "galley"
                                                                                                                                                                                                                                                                                                                                        "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                -> Dict
                                                                                                                                                                                                                                                                                                                                     (HasAnnotation
                                                                                                                                                                                                                                                                                                                                        'Remote
                                                                                                                                                                                                                                                                                                                                        "brig"
                                                                                                                                                                                                                                                                                                                                        "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                     'QLocal
                                                                                                                                                                                                                                                                                                                                     UserId
                                                                                                                                                                                                                                                                                                                                -> ConnId
                                                                                                                                                                                                                                                                                                                                -> ConvId
                                                                                                                                                                                                                                                                                                                                -> ConversationRename
                                                                                                                                                                                                                                                                                                                                -> Handler
                                                                                                                                                                                                                                                                                                                                     (UpdateResult
                                                                                                                                                                                                                                                                                                                                        Event))
                                                                                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                                                                                     "update-conversation-name"
                                                                                                                                                                                                                                                                                                                                     (Dict
                                                                                                                                                                                                                                                                                                                                        (HasAnnotation
                                                                                                                                                                                                                                                                                                                                           'Remote
                                                                                                                                                                                                                                                                                                                                           "galley"
                                                                                                                                                                                                                                                                                                                                           "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                      -> Dict
                                                                                                                                                                                                                                                                                                                                           (HasAnnotation
                                                                                                                                                                                                                                                                                                                                              'Remote
                                                                                                                                                                                                                                                                                                                                              "galley"
                                                                                                                                                                                                                                                                                                                                              "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                      -> Dict
                                                                                                                                                                                                                                                                                                                                           (HasAnnotation
                                                                                                                                                                                                                                                                                                                                              'Remote
                                                                                                                                                                                                                                                                                                                                              "brig"
                                                                                                                                                                                                                                                                                                                                              "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                      -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                           'QLocal
                                                                                                                                                                                                                                                                                                                                           UserId
                                                                                                                                                                                                                                                                                                                                      -> ConnId
                                                                                                                                                                                                                                                                                                                                      -> Qualified
                                                                                                                                                                                                                                                                                                                                           ConvId
                                                                                                                                                                                                                                                                                                                                      -> ConversationRename
                                                                                                                                                                                                                                                                                                                                      -> Handler
                                                                                                                                                                                                                                                                                                                                           (UpdateResult
                                                                                                                                                                                                                                                                                                                                              Event))
                                                                                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                                                                                           "update-conversation-message-timer-unqualified"
                                                                                                                                                                                                                                                                                                                                           (Dict
                                                                                                                                                                                                                                                                                                                                              (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                 'Remote
                                                                                                                                                                                                                                                                                                                                                 "galley"
                                                                                                                                                                                                                                                                                                                                                 "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                            -> Dict
                                                                                                                                                                                                                                                                                                                                                 (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                    'Remote
                                                                                                                                                                                                                                                                                                                                                    "galley"
                                                                                                                                                                                                                                                                                                                                                    "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                            -> Dict
                                                                                                                                                                                                                                                                                                                                                 (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                    'Remote
                                                                                                                                                                                                                                                                                                                                                    "brig"
                                                                                                                                                                                                                                                                                                                                                    "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                            -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                 'QLocal
                                                                                                                                                                                                                                                                                                                                                 UserId
                                                                                                                                                                                                                                                                                                                                            -> ConnId
                                                                                                                                                                                                                                                                                                                                            -> ConvId
                                                                                                                                                                                                                                                                                                                                            -> ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                            -> Handler
                                                                                                                                                                                                                                                                                                                                                 (UpdateResult
                                                                                                                                                                                                                                                                                                                                                    Event))
                                                                                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                                                                                 "update-conversation-message-timer"
                                                                                                                                                                                                                                                                                                                                                 (Dict
                                                                                                                                                                                                                                                                                                                                                    (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                       'Remote
                                                                                                                                                                                                                                                                                                                                                       "galley"
                                                                                                                                                                                                                                                                                                                                                       "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                                  -> Dict
                                                                                                                                                                                                                                                                                                                                                       (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                          'Remote
                                                                                                                                                                                                                                                                                                                                                          "galley"
                                                                                                                                                                                                                                                                                                                                                          "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                                  -> Dict
                                                                                                                                                                                                                                                                                                                                                       (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                          'Remote
                                                                                                                                                                                                                                                                                                                                                          "brig"
                                                                                                                                                                                                                                                                                                                                                          "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                                  -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                       'QLocal
                                                                                                                                                                                                                                                                                                                                                       UserId
                                                                                                                                                                                                                                                                                                                                                  -> ConnId
                                                                                                                                                                                                                                                                                                                                                  -> Qualified
                                                                                                                                                                                                                                                                                                                                                       ConvId
                                                                                                                                                                                                                                                                                                                                                  -> ConversationMessageTimerUpdate
                                                                                                                                                                                                                                                                                                                                                  -> Handler
                                                                                                                                                                                                                                                                                                                                                       (UpdateResult
                                                                                                                                                                                                                                                                                                                                                          Event))
                                                                                                                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                                                                                                                       "update-conversation-receipt-mode-unqualified"
                                                                                                                                                                                                                                                                                                                                                       (Dict
                                                                                                                                                                                                                                                                                                                                                          (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                             'Remote
                                                                                                                                                                                                                                                                                                                                                             "galley"
                                                                                                                                                                                                                                                                                                                                                             "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                                        -> Dict
                                                                                                                                                                                                                                                                                                                                                             (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                'Remote
                                                                                                                                                                                                                                                                                                                                                                "galley"
                                                                                                                                                                                                                                                                                                                                                                "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                                        -> Dict
                                                                                                                                                                                                                                                                                                                                                             (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                'Remote
                                                                                                                                                                                                                                                                                                                                                                "galley"
                                                                                                                                                                                                                                                                                                                                                                "update-conversation")
                                                                                                                                                                                                                                                                                                                                                        -> Dict
                                                                                                                                                                                                                                                                                                                                                             (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                'Remote
                                                                                                                                                                                                                                                                                                                                                                "brig"
                                                                                                                                                                                                                                                                                                                                                                "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                                        -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                             'QLocal
                                                                                                                                                                                                                                                                                                                                                             UserId
                                                                                                                                                                                                                                                                                                                                                        -> ConnId
                                                                                                                                                                                                                                                                                                                                                        -> ConvId
                                                                                                                                                                                                                                                                                                                                                        -> ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                        -> Handler
                                                                                                                                                                                                                                                                                                                                                             (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                Event))
                                                                                                                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                                                                                                                             "update-conversation-receipt-mode"
                                                                                                                                                                                                                                                                                                                                                             (Dict
                                                                                                                                                                                                                                                                                                                                                                (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                   'Remote
                                                                                                                                                                                                                                                                                                                                                                   "galley"
                                                                                                                                                                                                                                                                                                                                                                   "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                                              -> Dict
                                                                                                                                                                                                                                                                                                                                                                   (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                      'Remote
                                                                                                                                                                                                                                                                                                                                                                      "galley"
                                                                                                                                                                                                                                                                                                                                                                      "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                                              -> Dict
                                                                                                                                                                                                                                                                                                                                                                   (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                      'Remote
                                                                                                                                                                                                                                                                                                                                                                      "galley"
                                                                                                                                                                                                                                                                                                                                                                      "update-conversation")
                                                                                                                                                                                                                                                                                                                                                              -> Dict
                                                                                                                                                                                                                                                                                                                                                                   (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                      'Remote
                                                                                                                                                                                                                                                                                                                                                                      "brig"
                                                                                                                                                                                                                                                                                                                                                                      "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                                              -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                   'QLocal
                                                                                                                                                                                                                                                                                                                                                                   UserId
                                                                                                                                                                                                                                                                                                                                                              -> ConnId
                                                                                                                                                                                                                                                                                                                                                              -> Qualified
                                                                                                                                                                                                                                                                                                                                                                   ConvId
                                                                                                                                                                                                                                                                                                                                                              -> ConversationReceiptModeUpdate
                                                                                                                                                                                                                                                                                                                                                              -> Handler
                                                                                                                                                                                                                                                                                                                                                                   (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                      Event))
                                                                                                                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                   "update-conversation-access-unqualified"
                                                                                                                                                                                                                                                                                                                                                                   (Dict
                                                                                                                                                                                                                                                                                                                                                                      (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                         'Remote
                                                                                                                                                                                                                                                                                                                                                                         "galley"
                                                                                                                                                                                                                                                                                                                                                                         "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                                                    -> Dict
                                                                                                                                                                                                                                                                                                                                                                         (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                            'Remote
                                                                                                                                                                                                                                                                                                                                                                            "galley"
                                                                                                                                                                                                                                                                                                                                                                            "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                                                    -> Dict
                                                                                                                                                                                                                                                                                                                                                                         (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                            'Remote
                                                                                                                                                                                                                                                                                                                                                                            "brig"
                                                                                                                                                                                                                                                                                                                                                                            "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                                                    -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                         'QLocal
                                                                                                                                                                                                                                                                                                                                                                         UserId
                                                                                                                                                                                                                                                                                                                                                                    -> ConnId
                                                                                                                                                                                                                                                                                                                                                                    -> ConvId
                                                                                                                                                                                                                                                                                                                                                                    -> ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                    -> Handler
                                                                                                                                                                                                                                                                                                                                                                         (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                            Event))
                                                                                                                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                         "update-conversation-access@v2"
                                                                                                                                                                                                                                                                                                                                                                         (Dict
                                                                                                                                                                                                                                                                                                                                                                            (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                               'Remote
                                                                                                                                                                                                                                                                                                                                                                               "galley"
                                                                                                                                                                                                                                                                                                                                                                               "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                                                          -> Dict
                                                                                                                                                                                                                                                                                                                                                                               (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                                  'Remote
                                                                                                                                                                                                                                                                                                                                                                                  "galley"
                                                                                                                                                                                                                                                                                                                                                                                  "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                                                          -> Dict
                                                                                                                                                                                                                                                                                                                                                                               (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                                  'Remote
                                                                                                                                                                                                                                                                                                                                                                                  "brig"
                                                                                                                                                                                                                                                                                                                                                                                  "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                                                          -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                               'QLocal
                                                                                                                                                                                                                                                                                                                                                                               UserId
                                                                                                                                                                                                                                                                                                                                                                          -> ConnId
                                                                                                                                                                                                                                                                                                                                                                          -> Qualified
                                                                                                                                                                                                                                                                                                                                                                               ConvId
                                                                                                                                                                                                                                                                                                                                                                          -> ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                          -> Handler
                                                                                                                                                                                                                                                                                                                                                                               (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                  Event))
                                                                                                                                                                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                               "update-conversation-access"
                                                                                                                                                                                                                                                                                                                                                                               (Dict
                                                                                                                                                                                                                                                                                                                                                                                  (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                                     'Remote
                                                                                                                                                                                                                                                                                                                                                                                     "galley"
                                                                                                                                                                                                                                                                                                                                                                                     "on-conversation-updated")
                                                                                                                                                                                                                                                                                                                                                                                -> Dict
                                                                                                                                                                                                                                                                                                                                                                                     (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                                        'Remote
                                                                                                                                                                                                                                                                                                                                                                                        "galley"
                                                                                                                                                                                                                                                                                                                                                                                        "on-mls-message-sent")
                                                                                                                                                                                                                                                                                                                                                                                -> Dict
                                                                                                                                                                                                                                                                                                                                                                                     (HasAnnotation
                                                                                                                                                                                                                                                                                                                                                                                        'Remote
                                                                                                                                                                                                                                                                                                                                                                                        "brig"
                                                                                                                                                                                                                                                                                                                                                                                        "get-users-by-ids")
                                                                                                                                                                                                                                                                                                                                                                                -> QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                                     'QLocal
                                                                                                                                                                                                                                                                                                                                                                                     UserId
                                                                                                                                                                                                                                                                                                                                                                                -> ConnId
                                                                                                                                                                                                                                                                                                                                                                                -> Qualified
                                                                                                                                                                                                                                                                                                                                                                                     ConvId
                                                                                                                                                                                                                                                                                                                                                                                -> ConversationAccessData
                                                                                                                                                                                                                                                                                                                                                                                -> Handler
                                                                                                                                                                                                                                                                                                                                                                                     (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                        Event))
                                                                                                                                                                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                     "get-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                     (QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                                        'QLocal
                                                                                                                                                                                                                                                                                                                                                                                        UserId
                                                                                                                                                                                                                                                                                                                                                                                      -> ConvId
                                                                                                                                                                                                                                                                                                                                                                                      -> Handler
                                                                                                                                                                                                                                                                                                                                                                                           (Maybe
                                                                                                                                                                                                                                                                                                                                                                                              Member))
                                                                                                                                                                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                           "update-conversation-self-unqualified"
                                                                                                                                                                                                                                                                                                                                                                                           (QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                                              'QLocal
                                                                                                                                                                                                                                                                                                                                                                                              UserId
                                                                                                                                                                                                                                                                                                                                                                                            -> ConnId
                                                                                                                                                                                                                                                                                                                                                                                            -> ConvId
                                                                                                                                                                                                                                                                                                                                                                                            -> MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                            -> Handler
                                                                                                                                                                                                                                                                                                                                                                                                 ())
                                                                                                                                                                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                                                                                                                                                                 "update-conversation-self"
                                                                                                                                                                                                                                                                                                                                                                                                 (QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                                                    'QLocal
                                                                                                                                                                                                                                                                                                                                                                                                    UserId
                                                                                                                                                                                                                                                                                                                                                                                                  -> ConnId
                                                                                                                                                                                                                                                                                                                                                                                                  -> Qualified
                                                                                                                                                                                                                                                                                                                                                                                                       ConvId
                                                                                                                                                                                                                                                                                                                                                                                                  -> MemberUpdate
                                                                                                                                                                                                                                                                                                                                                                                                  -> Handler
                                                                                                                                                                                                                                                                                                                                                                                                       ())
                                                                                                                                                                                                                                                                                                                                                                                               :<|> Named
                                                                                                                                                                                                                                                                                                                                                                                                      "update-conversation-protocol"
                                                                                                                                                                                                                                                                                                                                                                                                      (QualifiedWithTag
                                                                                                                                                                                                                                                                                                                                                                                                         'QLocal
                                                                                                                                                                                                                                                                                                                                                                                                         UserId
                                                                                                                                                                                                                                                                                                                                                                                                       -> ConnId
                                                                                                                                                                                                                                                                                                                                                                                                       -> Qualified
                                                                                                                                                                                                                                                                                                                                                                                                            ConvId
                                                                                                                                                                                                                                                                                                                                                                                                       -> ProtocolUpdate
                                                                                                                                                                                                                                                                                                                                                                                                       -> Handler
                                                                                                                                                                                                                                                                                                                                                                                                            (UpdateResult
                                                                                                                                                                                                                                                                                                                                                                                                               Event))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
    :<|> ((Named
             "get-team-conversation-roles"
             (UserId -> TeamId -> Handler ConversationRolesList)
           :<|> (Named
                   "get-team-conversations"
                   (UserId -> TeamId -> Handler TeamConversationList)
                 :<|> (Named
                         "get-team-conversation"
                         (UserId -> TeamId -> ConvId -> Handler TeamConversation)
                       :<|> Named
                              "delete-team-conversation"
                              (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                               -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                               -> Dict (HasAnnotation 'Remote "brig" "get-users-by-ids")
                               -> QualifiedWithTag 'QLocal UserId
                               -> ConnId
                               -> TeamId
                               -> ConvId
                               -> Handler ()))))
          :<|> ((Named
                   "post-otr-message-unqualified"
                   (Dict (HasAnnotation 'Remote "galley" "on-message-sent")
                    -> Dict (HasAnnotation 'Remote "brig" "get-user-clients")
                    -> QualifiedWithTag 'QLocal UserId
                    -> ConnId
                    -> ConvId
                    -> Maybe IgnoreMissing
                    -> Maybe ReportMissing
                    -> NewOtrMessage
                    -> Handler (PostOtrResponse ClientMismatch))
                 :<|> (Named
                         "post-otr-broadcast-unqualified"
                         (QualifiedWithTag 'QLocal UserId
                          -> ConnId
                          -> Maybe IgnoreMissing
                          -> Maybe ReportMissing
                          -> NewOtrMessage
                          -> Handler (PostOtrResponse ClientMismatch))
                       :<|> (Named
                               "post-proteus-message"
                               (Dict (HasAnnotation 'Remote "brig" "get-user-clients")
                                -> Dict (HasAnnotation 'Remote "galley" "on-message-sent")
                                -> Dict (HasAnnotation 'Remote "galley" "send-message")
                                -> QualifiedWithTag 'QLocal UserId
                                -> ConnId
                                -> Qualified ConvId
                                -> RawProto QualifiedNewOtrMessage
                                -> Handler
                                     (Either
                                        (MessageNotSent MessageSendingStatus) MessageSendingStatus))
                             :<|> Named
                                    "post-proteus-broadcast"
                                    (QualifiedWithTag 'QLocal UserId
                                     -> ConnId
                                     -> QualifiedNewOtrMessage
                                     -> Handler
                                          (Either
                                             (MessageNotSent MessageSendingStatus)
                                             MessageSendingStatus)))))
                :<|> ((Named
                         "post-bot-message-unqualified"
                         (Dict (HasAnnotation 'Remote "galley" "on-message-sent")
                          -> Dict (HasAnnotation 'Remote "brig" "get-user-clients")
                          -> BotId
                          -> ConvId
                          -> Maybe IgnoreMissing
                          -> Maybe ReportMissing
                          -> NewOtrMessage
                          -> Handler (PostOtrResponse ClientMismatch))
                       :<|> Named
                              "get-bot-conversation" (BotId -> ConvId -> Handler BotConvView))
                      :<|> ((Named
                               "create-non-binding-team"
                               (UserId -> ConnId -> NonBindingNewTeam -> Handler TeamId)
                             :<|> (Named
                                     "update-team"
                                     (UserId -> ConnId -> TeamId -> TeamUpdateData -> Handler ())
                                   :<|> (Named "get-teams" (UserId -> Handler TeamList)
                                         :<|> (Named "get-team" (UserId -> TeamId -> Handler Team)
                                               :<|> Named
                                                      "delete-team"
                                                      (UserId
                                                       -> ConnId
                                                       -> TeamId
                                                       -> TeamDeleteData
                                                       -> Handler ())))))
                            :<|> ((Named
                                     '("get", SSOConfig)
                                     (UserId -> TeamId -> Handler (LockableFeature SSOConfig))
                                   :<|> ((Named
                                            '("get", LegalholdConfig)
                                            (UserId
                                             -> TeamId -> Handler (LockableFeature LegalholdConfig))
                                          :<|> Named
                                                 '("put", LegalholdConfig)
                                                 (UserId
                                                  -> TeamId
                                                  -> Feature LegalholdConfig
                                                  -> Handler (LockableFeature LegalholdConfig)))
                                         :<|> ((Named
                                                  '("get", SearchVisibilityAvailableConfig)
                                                  (UserId
                                                   -> TeamId
                                                   -> Handler
                                                        (LockableFeature
                                                           SearchVisibilityAvailableConfig))
                                                :<|> Named
                                                       '("put", SearchVisibilityAvailableConfig)
                                                       (UserId
                                                        -> TeamId
                                                        -> Feature SearchVisibilityAvailableConfig
                                                        -> Handler
                                                             (LockableFeature
                                                                SearchVisibilityAvailableConfig)))
                                               :<|> (Named
                                                       "get-search-visibility"
                                                       (QualifiedWithTag 'QLocal UserId
                                                        -> TeamId
                                                        -> Handler TeamSearchVisibilityView)
                                                     :<|> (Named
                                                             "set-search-visibility"
                                                             (QualifiedWithTag 'QLocal UserId
                                                              -> TeamId
                                                              -> TeamSearchVisibilityView
                                                              -> Handler ())
                                                           :<|> (Named
                                                                   '("get",
                                                                     ValidateSAMLEmailsConfig)
                                                                   (UserId
                                                                    -> TeamId
                                                                    -> Handler
                                                                         (LockableFeature
                                                                            ValidateSAMLEmailsConfig))
                                                                 :<|> (Named
                                                                         '("get",
                                                                           DigitalSignaturesConfig)
                                                                         (UserId
                                                                          -> TeamId
                                                                          -> Handler
                                                                               (LockableFeature
                                                                                  DigitalSignaturesConfig))
                                                                       :<|> ((Named
                                                                                '("get",
                                                                                  AppLockConfig)
                                                                                (UserId
                                                                                 -> TeamId
                                                                                 -> Handler
                                                                                      (LockableFeature
                                                                                         AppLockConfig))
                                                                              :<|> Named
                                                                                     '("put",
                                                                                       AppLockConfig)
                                                                                     (UserId
                                                                                      -> TeamId
                                                                                      -> Feature
                                                                                           AppLockConfig
                                                                                      -> Handler
                                                                                           (LockableFeature
                                                                                              AppLockConfig)))
                                                                             :<|> ((Named
                                                                                      '("get",
                                                                                        FileSharingConfig)
                                                                                      (UserId
                                                                                       -> TeamId
                                                                                       -> Handler
                                                                                            (LockableFeature
                                                                                               FileSharingConfig))
                                                                                    :<|> Named
                                                                                           '("put",
                                                                                             FileSharingConfig)
                                                                                           (UserId
                                                                                            -> TeamId
                                                                                            -> Feature
                                                                                                 FileSharingConfig
                                                                                            -> Handler
                                                                                                 (LockableFeature
                                                                                                    FileSharingConfig)))
                                                                                   :<|> (Named
                                                                                           '("get",
                                                                                             ClassifiedDomainsConfig)
                                                                                           (UserId
                                                                                            -> TeamId
                                                                                            -> Handler
                                                                                                 (LockableFeature
                                                                                                    ClassifiedDomainsConfig))
                                                                                         :<|> ((Named
                                                                                                  '("get",
                                                                                                    ConferenceCallingConfig)
                                                                                                  (UserId
                                                                                                   -> TeamId
                                                                                                   -> Handler
                                                                                                        (LockableFeature
                                                                                                           ConferenceCallingConfig))
                                                                                                :<|> Named
                                                                                                       '("put",
                                                                                                         ConferenceCallingConfig)
                                                                                                       (UserId
                                                                                                        -> TeamId
                                                                                                        -> Feature
                                                                                                             ConferenceCallingConfig
                                                                                                        -> Handler
                                                                                                             (LockableFeature
                                                                                                                ConferenceCallingConfig)))
                                                                                               :<|> ((Named
                                                                                                        '("get",
                                                                                                          SelfDeletingMessagesConfig)
                                                                                                        (UserId
                                                                                                         -> TeamId
                                                                                                         -> Handler
                                                                                                              (LockableFeature
                                                                                                                 SelfDeletingMessagesConfig))
                                                                                                      :<|> Named
                                                                                                             '("put",
                                                                                                               SelfDeletingMessagesConfig)
                                                                                                             (UserId
                                                                                                              -> TeamId
                                                                                                              -> Feature
                                                                                                                   SelfDeletingMessagesConfig
                                                                                                              -> Handler
                                                                                                                   (LockableFeature
                                                                                                                      SelfDeletingMessagesConfig)))
                                                                                                     :<|> ((Named
                                                                                                              '("get",
                                                                                                                GuestLinksConfig)
                                                                                                              (UserId
                                                                                                               -> TeamId
                                                                                                               -> Handler
                                                                                                                    (LockableFeature
                                                                                                                       GuestLinksConfig))
                                                                                                            :<|> Named
                                                                                                                   '("put",
                                                                                                                     GuestLinksConfig)
                                                                                                                   (UserId
                                                                                                                    -> TeamId
                                                                                                                    -> Feature
                                                                                                                         GuestLinksConfig
                                                                                                                    -> Handler
                                                                                                                         (LockableFeature
                                                                                                                            GuestLinksConfig)))
                                                                                                           :<|> ((Named
                                                                                                                    '("get",
                                                                                                                      SndFactorPasswordChallengeConfig)
                                                                                                                    (UserId
                                                                                                                     -> TeamId
                                                                                                                     -> Handler
                                                                                                                          (LockableFeature
                                                                                                                             SndFactorPasswordChallengeConfig))
                                                                                                                  :<|> Named
                                                                                                                         '("put",
                                                                                                                           SndFactorPasswordChallengeConfig)
                                                                                                                         (UserId
                                                                                                                          -> TeamId
                                                                                                                          -> Feature
                                                                                                                               SndFactorPasswordChallengeConfig
                                                                                                                          -> Handler
                                                                                                                               (LockableFeature
                                                                                                                                  SndFactorPasswordChallengeConfig)))
                                                                                                                 :<|> ((Named
                                                                                                                          '("get",
                                                                                                                            MLSConfig)
                                                                                                                          (UserId
                                                                                                                           -> TeamId
                                                                                                                           -> Handler
                                                                                                                                (LockableFeature
                                                                                                                                   MLSConfig))
                                                                                                                        :<|> Named
                                                                                                                               '("put",
                                                                                                                                 MLSConfig)
                                                                                                                               (UserId
                                                                                                                                -> TeamId
                                                                                                                                -> Feature
                                                                                                                                     MLSConfig
                                                                                                                                -> Handler
                                                                                                                                     (LockableFeature
                                                                                                                                        MLSConfig)))
                                                                                                                       :<|> ((Named
                                                                                                                                '("get",
                                                                                                                                  ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                (UserId
                                                                                                                                 -> TeamId
                                                                                                                                 -> Handler
                                                                                                                                      (LockableFeature
                                                                                                                                         ExposeInvitationURLsToTeamAdminConfig))
                                                                                                                              :<|> Named
                                                                                                                                     '("put",
                                                                                                                                       ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                     (UserId
                                                                                                                                      -> TeamId
                                                                                                                                      -> Feature
                                                                                                                                           ExposeInvitationURLsToTeamAdminConfig
                                                                                                                                      -> Handler
                                                                                                                                           (LockableFeature
                                                                                                                                              ExposeInvitationURLsToTeamAdminConfig)))
                                                                                                                             :<|> ((Named
                                                                                                                                      '("get",
                                                                                                                                        SearchVisibilityInboundConfig)
                                                                                                                                      (UserId
                                                                                                                                       -> TeamId
                                                                                                                                       -> Handler
                                                                                                                                            (LockableFeature
                                                                                                                                               SearchVisibilityInboundConfig))
                                                                                                                                    :<|> Named
                                                                                                                                           '("put",
                                                                                                                                             SearchVisibilityInboundConfig)
                                                                                                                                           (UserId
                                                                                                                                            -> TeamId
                                                                                                                                            -> Feature
                                                                                                                                                 SearchVisibilityInboundConfig
                                                                                                                                            -> Handler
                                                                                                                                                 (LockableFeature
                                                                                                                                                    SearchVisibilityInboundConfig)))
                                                                                                                                   :<|> ((Named
                                                                                                                                            '("get",
                                                                                                                                              OutlookCalIntegrationConfig)
                                                                                                                                            (UserId
                                                                                                                                             -> TeamId
                                                                                                                                             -> Handler
                                                                                                                                                  (LockableFeature
                                                                                                                                                     OutlookCalIntegrationConfig))
                                                                                                                                          :<|> Named
                                                                                                                                                 '("put",
                                                                                                                                                   OutlookCalIntegrationConfig)
                                                                                                                                                 (UserId
                                                                                                                                                  -> TeamId
                                                                                                                                                  -> Feature
                                                                                                                                                       OutlookCalIntegrationConfig
                                                                                                                                                  -> Handler
                                                                                                                                                       (LockableFeature
                                                                                                                                                          OutlookCalIntegrationConfig)))
                                                                                                                                         :<|> (Named
                                                                                                                                                 '("get",
                                                                                                                                                   MlsE2EIdConfig)
                                                                                                                                                 (UserId
                                                                                                                                                  -> TeamId
                                                                                                                                                  -> Handler
                                                                                                                                                       (LockableFeature
                                                                                                                                                          MlsE2EIdConfig))
                                                                                                                                               :<|> (Named
                                                                                                                                                       "put-MlsE2EIdConfig@v5"
                                                                                                                                                       (UserId
                                                                                                                                                        -> TeamId
                                                                                                                                                        -> Feature
                                                                                                                                                             MlsE2EIdConfig
                                                                                                                                                        -> Handler
                                                                                                                                                             (LockableFeature
                                                                                                                                                                MlsE2EIdConfig))
                                                                                                                                                     :<|> (Named
                                                                                                                                                             '("put",
                                                                                                                                                               MlsE2EIdConfig)
                                                                                                                                                             (UserId
                                                                                                                                                              -> TeamId
                                                                                                                                                              -> Feature
                                                                                                                                                                   MlsE2EIdConfig
                                                                                                                                                              -> Handler
                                                                                                                                                                   (LockableFeature
                                                                                                                                                                      MlsE2EIdConfig))
                                                                                                                                                           :<|> ((Named
                                                                                                                                                                    '("get",
                                                                                                                                                                      MlsMigrationConfig)
                                                                                                                                                                    (UserId
                                                                                                                                                                     -> TeamId
                                                                                                                                                                     -> Handler
                                                                                                                                                                          (LockableFeature
                                                                                                                                                                             MlsMigrationConfig))
                                                                                                                                                                  :<|> Named
                                                                                                                                                                         '("put",
                                                                                                                                                                           MlsMigrationConfig)
                                                                                                                                                                         (UserId
                                                                                                                                                                          -> TeamId
                                                                                                                                                                          -> Feature
                                                                                                                                                                               MlsMigrationConfig
                                                                                                                                                                          -> Handler
                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                  MlsMigrationConfig)))
                                                                                                                                                                 :<|> ((Named
                                                                                                                                                                          '("get",
                                                                                                                                                                            EnforceFileDownloadLocationConfig)
                                                                                                                                                                          (UserId
                                                                                                                                                                           -> TeamId
                                                                                                                                                                           -> Handler
                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                   EnforceFileDownloadLocationConfig))
                                                                                                                                                                        :<|> Named
                                                                                                                                                                               '("put",
                                                                                                                                                                                 EnforceFileDownloadLocationConfig)
                                                                                                                                                                               (UserId
                                                                                                                                                                                -> TeamId
                                                                                                                                                                                -> Feature
                                                                                                                                                                                     EnforceFileDownloadLocationConfig
                                                                                                                                                                                -> Handler
                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                        EnforceFileDownloadLocationConfig)))
                                                                                                                                                                       :<|> (Named
                                                                                                                                                                               '("get",
                                                                                                                                                                                 LimitedEventFanoutConfig)
                                                                                                                                                                               (UserId
                                                                                                                                                                                -> TeamId
                                                                                                                                                                                -> Handler
                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                        LimitedEventFanoutConfig))
                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                     "get-all-feature-configs-for-user"
                                                                                                                                                                                     (UserId
                                                                                                                                                                                      -> Handler
                                                                                                                                                                                           AllTeamFeatures)
                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                           "get-all-feature-configs-for-team"
                                                                                                                                                                                           (QualifiedWithTag
                                                                                                                                                                                              'QLocal
                                                                                                                                                                                              UserId
                                                                                                                                                                                            -> TeamId
                                                                                                                                                                                            -> Handler
                                                                                                                                                                                                 AllTeamFeatures)
                                                                                                                                                                                         :<|> ((Named
                                                                                                                                                                                                  '("get-deprecated",
                                                                                                                                                                                                    SearchVisibilityAvailableConfig)
                                                                                                                                                                                                  (UserId
                                                                                                                                                                                                   -> TeamId
                                                                                                                                                                                                   -> Handler
                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                           SearchVisibilityAvailableConfig))
                                                                                                                                                                                                :<|> (Named
                                                                                                                                                                                                        '("put-deprecated",
                                                                                                                                                                                                          SearchVisibilityAvailableConfig)
                                                                                                                                                                                                        (UserId
                                                                                                                                                                                                         -> TeamId
                                                                                                                                                                                                         -> Feature
                                                                                                                                                                                                              SearchVisibilityAvailableConfig
                                                                                                                                                                                                         -> Handler
                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                 SearchVisibilityAvailableConfig))
                                                                                                                                                                                                      :<|> (Named
                                                                                                                                                                                                              '("get-deprecated",
                                                                                                                                                                                                                ValidateSAMLEmailsConfig)
                                                                                                                                                                                                              (UserId
                                                                                                                                                                                                               -> TeamId
                                                                                                                                                                                                               -> Handler
                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                       ValidateSAMLEmailsConfig))
                                                                                                                                                                                                            :<|> Named
                                                                                                                                                                                                                   '("get-deprecated",
                                                                                                                                                                                                                     DigitalSignaturesConfig)
                                                                                                                                                                                                                   (UserId
                                                                                                                                                                                                                    -> TeamId
                                                                                                                                                                                                                    -> Handler
                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                            DigitalSignaturesConfig)))))
                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                       '("get-config",
                                                                                                                                                                                                         LegalholdConfig)
                                                                                                                                                                                                       (UserId
                                                                                                                                                                                                        -> Handler
                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                LegalholdConfig))
                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                             '("get-config",
                                                                                                                                                                                                               SSOConfig)
                                                                                                                                                                                                             (UserId
                                                                                                                                                                                                              -> Handler
                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                      SSOConfig))
                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                   '("get-config",
                                                                                                                                                                                                                     SearchVisibilityAvailableConfig)
                                                                                                                                                                                                                   (UserId
                                                                                                                                                                                                                    -> Handler
                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                            SearchVisibilityAvailableConfig))
                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                         '("get-config",
                                                                                                                                                                                                                           ValidateSAMLEmailsConfig)
                                                                                                                                                                                                                         (UserId
                                                                                                                                                                                                                          -> Handler
                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                  ValidateSAMLEmailsConfig))
                                                                                                                                                                                                                       :<|> (Named
                                                                                                                                                                                                                               '("get-config",
                                                                                                                                                                                                                                 DigitalSignaturesConfig)
                                                                                                                                                                                                                               (UserId
                                                                                                                                                                                                                                -> Handler
                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                        DigitalSignaturesConfig))
                                                                                                                                                                                                                             :<|> (Named
                                                                                                                                                                                                                                     '("get-config",
                                                                                                                                                                                                                                       AppLockConfig)
                                                                                                                                                                                                                                     (UserId
                                                                                                                                                                                                                                      -> Handler
                                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                                              AppLockConfig))
                                                                                                                                                                                                                                   :<|> (Named
                                                                                                                                                                                                                                           '("get-config",
                                                                                                                                                                                                                                             FileSharingConfig)
                                                                                                                                                                                                                                           (UserId
                                                                                                                                                                                                                                            -> Handler
                                                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                                                    FileSharingConfig))
                                                                                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                                                                                 '("get-config",
                                                                                                                                                                                                                                                   ClassifiedDomainsConfig)
                                                                                                                                                                                                                                                 (UserId
                                                                                                                                                                                                                                                  -> Handler
                                                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                                                          ClassifiedDomainsConfig))
                                                                                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                                                                                       '("get-config",
                                                                                                                                                                                                                                                         ConferenceCallingConfig)
                                                                                                                                                                                                                                                       (UserId
                                                                                                                                                                                                                                                        -> Handler
                                                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                                                ConferenceCallingConfig))
                                                                                                                                                                                                                                                     :<|> (Named
                                                                                                                                                                                                                                                             '("get-config",
                                                                                                                                                                                                                                                               SelfDeletingMessagesConfig)
                                                                                                                                                                                                                                                             (UserId
                                                                                                                                                                                                                                                              -> Handler
                                                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                                                      SelfDeletingMessagesConfig))
                                                                                                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                                                                                                   '("get-config",
                                                                                                                                                                                                                                                                     GuestLinksConfig)
                                                                                                                                                                                                                                                                   (UserId
                                                                                                                                                                                                                                                                    -> Handler
                                                                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                                                                            GuestLinksConfig))
                                                                                                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                                                                                                         '("get-config",
                                                                                                                                                                                                                                                                           SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                                                                                         (UserId
                                                                                                                                                                                                                                                                          -> Handler
                                                                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                                                                  SndFactorPasswordChallengeConfig))
                                                                                                                                                                                                                                                                       :<|> Named
                                                                                                                                                                                                                                                                              '("get-config",
                                                                                                                                                                                                                                                                                MLSConfig)
                                                                                                                                                                                                                                                                              (UserId
                                                                                                                                                                                                                                                                               -> Handler
                                                                                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                                                                                       MLSConfig)))))))))))))))))))))))))))))))))))))))))
                                  :<|> ((Named
                                           "mls-message"
                                           (Dict
                                              (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                                            -> Dict
                                                 (HasAnnotation 'Remote "galley" "send-mls-message")
                                            -> Dict
                                                 (HasAnnotation
                                                    'Remote "galley" "on-conversation-updated")
                                            -> Dict (HasAnnotation 'Remote "brig" "get-mls-clients")
                                            -> QualifiedWithTag 'QLocal UserId
                                            -> ClientId
                                            -> ConnId
                                            -> RawMLS Message
                                            -> Handler MLSMessageSendingStatus)
                                         :<|> (Named
                                                 "mls-commit-bundle"
                                                 (Dict
                                                    (HasAnnotation
                                                       'Remote "galley" "on-mls-message-sent")
                                                  -> Dict
                                                       (HasAnnotation
                                                          'Remote "galley" "mls-welcome")
                                                  -> Dict
                                                       (HasAnnotation
                                                          'Remote "galley" "send-mls-commit-bundle")
                                                  -> Dict
                                                       (HasAnnotation
                                                          'Remote
                                                          "galley"
                                                          "on-conversation-updated")
                                                  -> Dict
                                                       (HasAnnotation
                                                          'Remote "brig" "get-mls-clients")
                                                  -> Dict
                                                       (HasAnnotation
                                                          'Remote "brig" "get-users-by-ids")
                                                  -> Dict
                                                       (HasAnnotation 'Remote "brig" "api-version")
                                                  -> QualifiedWithTag 'QLocal UserId
                                                  -> ClientId
                                                  -> ConnId
                                                  -> RawMLS CommitBundle
                                                  -> Handler MLSMessageSendingStatus)
                                               :<|> Named
                                                      "mls-public-keys"
                                                      (QualifiedWithTag 'QLocal UserId
                                                       -> Maybe MLSPublicKeyFormat
                                                       -> Handler
                                                            (MLSKeysByPurpose (MLSKeys SomeKey)))))
                                        :<|> (Named
                                                "get-custom-backend-by-domain"
                                                (Domain -> Handler CustomBackend)
                                              :<|> ((Named
                                                       "create-legal-hold-settings"
                                                       (QualifiedWithTag 'QLocal UserId
                                                        -> TeamId
                                                        -> NewLegalHoldService
                                                        -> Handler ViewLegalHoldService)
                                                     :<|> (Named
                                                             "get-legal-hold-settings"
                                                             (QualifiedWithTag 'QLocal UserId
                                                              -> TeamId
                                                              -> Handler ViewLegalHoldService)
                                                           :<|> (Named
                                                                   "delete-legal-hold-settings"
                                                                   (Dict
                                                                      (HasAnnotation
                                                                         'Remote
                                                                         "galley"
                                                                         "on-conversation-updated")
                                                                    -> Dict
                                                                         (HasAnnotation
                                                                            'Remote
                                                                            "galley"
                                                                            "on-mls-message-sent")
                                                                    -> Dict
                                                                         (HasAnnotation
                                                                            'Remote
                                                                            "brig"
                                                                            "get-users-by-ids")
                                                                    -> QualifiedWithTag
                                                                         'QLocal UserId
                                                                    -> TeamId
                                                                    -> RemoveLegalHoldSettingsRequest
                                                                    -> Handler ())
                                                                 :<|> (Named
                                                                         "get-legal-hold"
                                                                         (QualifiedWithTag
                                                                            'QLocal UserId
                                                                          -> TeamId
                                                                          -> UserId
                                                                          -> Handler
                                                                               UserLegalHoldStatusResponse)
                                                                       :<|> (Named
                                                                               "consent-to-legal-hold"
                                                                               (Dict
                                                                                  (HasAnnotation
                                                                                     'Remote
                                                                                     "galley"
                                                                                     "on-conversation-updated")
                                                                                -> Dict
                                                                                     (HasAnnotation
                                                                                        'Remote
                                                                                        "galley"
                                                                                        "on-mls-message-sent")
                                                                                -> Dict
                                                                                     (HasAnnotation
                                                                                        'Remote
                                                                                        "brig"
                                                                                        "get-users-by-ids")
                                                                                -> QualifiedWithTag
                                                                                     'QLocal UserId
                                                                                -> TeamId
                                                                                -> Handler
                                                                                     GrantConsentResult)
                                                                             :<|> (Named
                                                                                     "request-legal-hold-device"
                                                                                     (Dict
                                                                                        (HasAnnotation
                                                                                           'Remote
                                                                                           "galley"
                                                                                           "on-conversation-updated")
                                                                                      -> Dict
                                                                                           (HasAnnotation
                                                                                              'Remote
                                                                                              "galley"
                                                                                              "on-mls-message-sent")
                                                                                      -> Dict
                                                                                           (HasAnnotation
                                                                                              'Remote
                                                                                              "brig"
                                                                                              "get-users-by-ids")
                                                                                      -> QualifiedWithTag
                                                                                           'QLocal
                                                                                           UserId
                                                                                      -> TeamId
                                                                                      -> UserId
                                                                                      -> Handler
                                                                                           RequestDeviceResult)
                                                                                   :<|> (Named
                                                                                           "disable-legal-hold-for-user"
                                                                                           (Dict
                                                                                              (HasAnnotation
                                                                                                 'Remote
                                                                                                 "galley"
                                                                                                 "on-conversation-updated")
                                                                                            -> Dict
                                                                                                 (HasAnnotation
                                                                                                    'Remote
                                                                                                    "galley"
                                                                                                    "on-mls-message-sent")
                                                                                            -> Dict
                                                                                                 (HasAnnotation
                                                                                                    'Remote
                                                                                                    "brig"
                                                                                                    "get-users-by-ids")
                                                                                            -> QualifiedWithTag
                                                                                                 'QLocal
                                                                                                 UserId
                                                                                            -> TeamId
                                                                                            -> UserId
                                                                                            -> DisableLegalHoldForUserRequest
                                                                                            -> Handler
                                                                                                 DisableLegalHoldForUserResponse)
                                                                                         :<|> Named
                                                                                                "approve-legal-hold-device"
                                                                                                (Dict
                                                                                                   (HasAnnotation
                                                                                                      'Remote
                                                                                                      "galley"
                                                                                                      "on-conversation-updated")
                                                                                                 -> Dict
                                                                                                      (HasAnnotation
                                                                                                         'Remote
                                                                                                         "galley"
                                                                                                         "on-mls-message-sent")
                                                                                                 -> Dict
                                                                                                      (HasAnnotation
                                                                                                         'Remote
                                                                                                         "brig"
                                                                                                         "get-users-by-ids")
                                                                                                 -> QualifiedWithTag
                                                                                                      'QLocal
                                                                                                      UserId
                                                                                                 -> ConnId
                                                                                                 -> TeamId
                                                                                                 -> UserId
                                                                                                 -> ApproveLegalHoldForUserRequest
                                                                                                 -> Handler
                                                                                                      ()))))))))
                                                    :<|> ((Named
                                                             "get-team-members"
                                                             (QualifiedWithTag 'QLocal UserId
                                                              -> TeamId
                                                              -> Maybe
                                                                   (Range
                                                                      1 HardTruncationLimit Int32)
                                                              -> Maybe TeamMembersPagingState
                                                              -> Handler TeamMembersPage)
                                                           :<|> (Named
                                                                   "get-team-member"
                                                                   (QualifiedWithTag 'QLocal UserId
                                                                    -> TeamId
                                                                    -> UserId
                                                                    -> Handler TeamMemberOptPerms)
                                                                 :<|> (Named
                                                                         "get-team-members-by-ids"
                                                                         (QualifiedWithTag
                                                                            'QLocal UserId
                                                                          -> TeamId
                                                                          -> Maybe
                                                                               (Range
                                                                                  1
                                                                                  HardTruncationLimit
                                                                                  Int32)
                                                                          -> UserIdList
                                                                          -> Handler
                                                                               TeamMemberListOptPerms)
                                                                       :<|> (Named
                                                                               "add-team-member"
                                                                               (QualifiedWithTag
                                                                                  'QLocal UserId
                                                                                -> ConnId
                                                                                -> TeamId
                                                                                -> NewTeamMember
                                                                                -> Handler ())
                                                                             :<|> (Named
                                                                                     "delete-team-member"
                                                                                     (QualifiedWithTag
                                                                                        'QLocal
                                                                                        UserId
                                                                                      -> ConnId
                                                                                      -> TeamId
                                                                                      -> UserId
                                                                                      -> TeamMemberDeleteData
                                                                                      -> Handler
                                                                                           TeamMemberDeleteResult)
                                                                                   :<|> (Named
                                                                                           "delete-non-binding-team-member"
                                                                                           (QualifiedWithTag
                                                                                              'QLocal
                                                                                              UserId
                                                                                            -> ConnId
                                                                                            -> TeamId
                                                                                            -> UserId
                                                                                            -> Handler
                                                                                                 TeamMemberDeleteResult)
                                                                                         :<|> (Named
                                                                                                 "update-team-member"
                                                                                                 (QualifiedWithTag
                                                                                                    'QLocal
                                                                                                    UserId
                                                                                                  -> ConnId
                                                                                                  -> TeamId
                                                                                                  -> NewTeamMember
                                                                                                  -> Handler
                                                                                                       ())
                                                                                               :<|> Named
                                                                                                      "get-team-members-csv"
                                                                                                      (QualifiedWithTag
                                                                                                         'QLocal
                                                                                                         UserId
                                                                                                       -> TeamId
                                                                                                       -> Handler
                                                                                                            StreamingBody))))))))
                                                          :<|> Named
                                                                 "get-team-notifications"
                                                                 (UserId
                                                                  -> Maybe NotificationId
                                                                  -> Maybe (Range 1 10000 Int32)
                                                                  -> Handler
                                                                       QueuedNotificationList)))))))))))
   :<|> ((Named "status" (Handler ())
          :<|> (Named
                  "delete-user"
                  (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                   -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                   -> QualifiedWithTag 'QLocal UserId
                   -> Maybe ConnId
                   -> Handler ())
                :<|> (Named
                        "connect"
                        (Dict (HasAnnotation 'Remote "brig" "api-version")
                         -> Dict (HasAnnotation 'Remote "galley" "on-conversation-created")
                         -> Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                         -> QualifiedWithTag 'QLocal UserId
                         -> Maybe ConnId
                         -> Connect
                         -> Handler (ResponseForExistedCreated Conversation))
                      :<|> (Named
                              "get-conversation-clients" (GroupId -> Handler ClientList)
                            :<|> (Named
                                    "guard-legalhold-policy-conflicts"
                                    (GuardLegalholdPolicyConflicts -> Handler ())
                                  :<|> ((TeamId
                                         -> Named "set-team-legalhold-whitelisted" (Handler ())
                                            :<|> (Named
                                                    "unset-team-legalhold-whitelisted" (Handler ())
                                                  :<|> Named
                                                         "get-team-legalhold-whitelisted"
                                                         (Handler Bool)))
                                        :<|> ((TeamId
                                               -> Named "get-team-internal" (Handler TeamData)
                                                  :<|> (Named
                                                          "create-binding-team"
                                                          (UserId
                                                           -> BindingNewTeam -> Handler TeamId)
                                                        :<|> (Named
                                                                "delete-binding-team"
                                                                (Bool -> Handler ())
                                                              :<|> (Named
                                                                      "get-team-name"
                                                                      (Handler TeamName)
                                                                    :<|> (Named
                                                                            "update-team-status"
                                                                            (TeamStatusUpdate
                                                                             -> Handler ())
                                                                          :<|> ((Named
                                                                                   "unchecked-add-team-member"
                                                                                   (NewTeamMember
                                                                                    -> Handler ())
                                                                                 :<|> (Named
                                                                                         "unchecked-get-team-members"
                                                                                         (Maybe
                                                                                            (Range
                                                                                               1
                                                                                               HardTruncationLimit
                                                                                               Int32)
                                                                                          -> Handler
                                                                                               TeamMemberList)
                                                                                       :<|> (Named
                                                                                               "unchecked-get-team-member"
                                                                                               (UserId
                                                                                                -> Handler
                                                                                                     TeamMember)
                                                                                             :<|> (Named
                                                                                                     "can-user-join-team"
                                                                                                     (Handler
                                                                                                        ())
                                                                                                   :<|> Named
                                                                                                          "unchecked-update-team-member"
                                                                                                          (NewTeamMember
                                                                                                           -> Handler
                                                                                                                ())))))
                                                                                :<|> (Named
                                                                                        "user-is-team-owner"
                                                                                        (UserId
                                                                                         -> Handler
                                                                                              ())
                                                                                      :<|> (Named
                                                                                              "get-search-visibility-internal"
                                                                                              (Handler
                                                                                                 TeamSearchVisibilityView)
                                                                                            :<|> Named
                                                                                                   "set-search-visibility-internal"
                                                                                                   (TeamSearchVisibilityView
                                                                                                    -> Handler
                                                                                                         ())))))))))
                                              :<|> ((Named
                                                       "get-team-members"
                                                       (UserId -> Handler TeamMemberList)
                                                     :<|> (Named
                                                             "get-team-id"
                                                             (UserId -> Handler TeamId)
                                                           :<|> (Named
                                                                   "test-get-clients"
                                                                   (UserId -> Handler [ClientId])
                                                                 :<|> (Named
                                                                         "test-add-client"
                                                                         (UserId
                                                                          -> ClientId -> Handler ())
                                                                       :<|> (Named
                                                                               "test-delete-client"
                                                                               (UserId
                                                                                -> ClientId
                                                                                -> Handler ())
                                                                             :<|> (Named
                                                                                     "add-service"
                                                                                     (Service
                                                                                      -> Handler ())
                                                                                   :<|> (Named
                                                                                           "delete-service"
                                                                                           (ServiceRef
                                                                                            -> Handler
                                                                                                 ())
                                                                                         :<|> (Named
                                                                                                 "i-add-bot"
                                                                                                 (QualifiedWithTag
                                                                                                    'QLocal
                                                                                                    UserId
                                                                                                  -> ConnId
                                                                                                  -> AddBot
                                                                                                  -> Handler
                                                                                                       Event)
                                                                                               :<|> (Named
                                                                                                       "delete-bot"
                                                                                                       (QualifiedWithTag
                                                                                                          'QLocal
                                                                                                          UserId
                                                                                                        -> Maybe
                                                                                                             ConnId
                                                                                                        -> RemoveBot
                                                                                                        -> Handler
                                                                                                             (UpdateResult
                                                                                                                Event))
                                                                                                     :<|> (Named
                                                                                                             "put-custom-backend"
                                                                                                             (Domain
                                                                                                              -> CustomBackend
                                                                                                              -> Handler
                                                                                                                   ())
                                                                                                           :<|> Named
                                                                                                                  "delete-custom-backend"
                                                                                                                  (Domain
                                                                                                                   -> Handler
                                                                                                                        ())))))))))))
                                                    :<|> (Named
                                                            "upsert-one2one"
                                                            (UpsertOne2OneConversationRequest
                                                             -> Handler ())
                                                          :<|> ((((Named
                                                                     '("iget", LegalholdConfig)
                                                                     (TeamId
                                                                      -> Handler
                                                                           (LockableFeature
                                                                              LegalholdConfig))
                                                                   :<|> (Named
                                                                           '("iput",
                                                                             LegalholdConfig)
                                                                           (TeamId
                                                                            -> Feature
                                                                                 LegalholdConfig
                                                                            -> Handler
                                                                                 (LockableFeature
                                                                                    LegalholdConfig))
                                                                         :<|> Named
                                                                                '("ipatch",
                                                                                  LegalholdConfig)
                                                                                (TeamId
                                                                                 -> LockableFeaturePatch
                                                                                      LegalholdConfig
                                                                                 -> Handler
                                                                                      (LockableFeature
                                                                                         LegalholdConfig))))
                                                                  :<|> ((Named
                                                                           '("iget", SSOConfig)
                                                                           (TeamId
                                                                            -> Handler
                                                                                 (LockableFeature
                                                                                    SSOConfig))
                                                                         :<|> (Named
                                                                                 '("iput",
                                                                                   SSOConfig)
                                                                                 (TeamId
                                                                                  -> Feature
                                                                                       SSOConfig
                                                                                  -> Handler
                                                                                       (LockableFeature
                                                                                          SSOConfig))
                                                                               :<|> Named
                                                                                      '("ipatch",
                                                                                        SSOConfig)
                                                                                      (TeamId
                                                                                       -> LockableFeaturePatch
                                                                                            SSOConfig
                                                                                       -> Handler
                                                                                            (LockableFeature
                                                                                               SSOConfig))))
                                                                        :<|> ((Named
                                                                                 '("iget",
                                                                                   SearchVisibilityAvailableConfig)
                                                                                 (TeamId
                                                                                  -> Handler
                                                                                       (LockableFeature
                                                                                          SearchVisibilityAvailableConfig))
                                                                               :<|> (Named
                                                                                       '("iput",
                                                                                         SearchVisibilityAvailableConfig)
                                                                                       (TeamId
                                                                                        -> Feature
                                                                                             SearchVisibilityAvailableConfig
                                                                                        -> Handler
                                                                                             (LockableFeature
                                                                                                SearchVisibilityAvailableConfig))
                                                                                     :<|> Named
                                                                                            '("ipatch",
                                                                                              SearchVisibilityAvailableConfig)
                                                                                            (TeamId
                                                                                             -> LockableFeaturePatch
                                                                                                  SearchVisibilityAvailableConfig
                                                                                             -> Handler
                                                                                                  (LockableFeature
                                                                                                     SearchVisibilityAvailableConfig))))
                                                                              :<|> ((Named
                                                                                       '("iget",
                                                                                         SearchVisibilityInboundConfig)
                                                                                       (TeamId
                                                                                        -> Handler
                                                                                             (LockableFeature
                                                                                                SearchVisibilityInboundConfig))
                                                                                     :<|> (Named
                                                                                             '("iput",
                                                                                               SearchVisibilityInboundConfig)
                                                                                             (TeamId
                                                                                              -> Feature
                                                                                                   SearchVisibilityInboundConfig
                                                                                              -> Handler
                                                                                                   (LockableFeature
                                                                                                      SearchVisibilityInboundConfig))
                                                                                           :<|> Named
                                                                                                  '("ipatch",
                                                                                                    SearchVisibilityInboundConfig)
                                                                                                  (TeamId
                                                                                                   -> LockableFeaturePatch
                                                                                                        SearchVisibilityInboundConfig
                                                                                                   -> Handler
                                                                                                        (LockableFeature
                                                                                                           SearchVisibilityInboundConfig))))
                                                                                    :<|> ((Named
                                                                                             '("iget",
                                                                                               ValidateSAMLEmailsConfig)
                                                                                             (TeamId
                                                                                              -> Handler
                                                                                                   (LockableFeature
                                                                                                      ValidateSAMLEmailsConfig))
                                                                                           :<|> (Named
                                                                                                   '("iput",
                                                                                                     ValidateSAMLEmailsConfig)
                                                                                                   (TeamId
                                                                                                    -> Feature
                                                                                                         ValidateSAMLEmailsConfig
                                                                                                    -> Handler
                                                                                                         (LockableFeature
                                                                                                            ValidateSAMLEmailsConfig))
                                                                                                 :<|> Named
                                                                                                        '("ipatch",
                                                                                                          ValidateSAMLEmailsConfig)
                                                                                                        (TeamId
                                                                                                         -> LockableFeaturePatch
                                                                                                              ValidateSAMLEmailsConfig
                                                                                                         -> Handler
                                                                                                              (LockableFeature
                                                                                                                 ValidateSAMLEmailsConfig))))
                                                                                          :<|> ((Named
                                                                                                   '("iget",
                                                                                                     DigitalSignaturesConfig)
                                                                                                   (TeamId
                                                                                                    -> Handler
                                                                                                         (LockableFeature
                                                                                                            DigitalSignaturesConfig))
                                                                                                 :<|> (Named
                                                                                                         '("iput",
                                                                                                           DigitalSignaturesConfig)
                                                                                                         (TeamId
                                                                                                          -> Feature
                                                                                                               DigitalSignaturesConfig
                                                                                                          -> Handler
                                                                                                               (LockableFeature
                                                                                                                  DigitalSignaturesConfig))
                                                                                                       :<|> Named
                                                                                                              '("ipatch",
                                                                                                                DigitalSignaturesConfig)
                                                                                                              (TeamId
                                                                                                               -> LockableFeaturePatch
                                                                                                                    DigitalSignaturesConfig
                                                                                                               -> Handler
                                                                                                                    (LockableFeature
                                                                                                                       DigitalSignaturesConfig))))
                                                                                                :<|> ((Named
                                                                                                         '("iget",
                                                                                                           AppLockConfig)
                                                                                                         (TeamId
                                                                                                          -> Handler
                                                                                                               (LockableFeature
                                                                                                                  AppLockConfig))
                                                                                                       :<|> (Named
                                                                                                               '("iput",
                                                                                                                 AppLockConfig)
                                                                                                               (TeamId
                                                                                                                -> Feature
                                                                                                                     AppLockConfig
                                                                                                                -> Handler
                                                                                                                     (LockableFeature
                                                                                                                        AppLockConfig))
                                                                                                             :<|> Named
                                                                                                                    '("ipatch",
                                                                                                                      AppLockConfig)
                                                                                                                    (TeamId
                                                                                                                     -> LockableFeaturePatch
                                                                                                                          AppLockConfig
                                                                                                                     -> Handler
                                                                                                                          (LockableFeature
                                                                                                                             AppLockConfig))))
                                                                                                      :<|> ((Named
                                                                                                               '("iget",
                                                                                                                 FileSharingConfig)
                                                                                                               (TeamId
                                                                                                                -> Handler
                                                                                                                     (LockableFeature
                                                                                                                        FileSharingConfig))
                                                                                                             :<|> (Named
                                                                                                                     '("iput",
                                                                                                                       FileSharingConfig)
                                                                                                                     (TeamId
                                                                                                                      -> Feature
                                                                                                                           FileSharingConfig
                                                                                                                      -> Handler
                                                                                                                           (LockableFeature
                                                                                                                              FileSharingConfig))
                                                                                                                   :<|> Named
                                                                                                                          '("ipatch",
                                                                                                                            FileSharingConfig)
                                                                                                                          (TeamId
                                                                                                                           -> LockableFeaturePatch
                                                                                                                                FileSharingConfig
                                                                                                                           -> Handler
                                                                                                                                (LockableFeature
                                                                                                                                   FileSharingConfig))))
                                                                                                            :<|> (Named
                                                                                                                    '("iget",
                                                                                                                      ClassifiedDomainsConfig)
                                                                                                                    (TeamId
                                                                                                                     -> Handler
                                                                                                                          (LockableFeature
                                                                                                                             ClassifiedDomainsConfig))
                                                                                                                  :<|> ((Named
                                                                                                                           '("iget",
                                                                                                                             ConferenceCallingConfig)
                                                                                                                           (TeamId
                                                                                                                            -> Handler
                                                                                                                                 (LockableFeature
                                                                                                                                    ConferenceCallingConfig))
                                                                                                                         :<|> (Named
                                                                                                                                 '("iput",
                                                                                                                                   ConferenceCallingConfig)
                                                                                                                                 (TeamId
                                                                                                                                  -> Feature
                                                                                                                                       ConferenceCallingConfig
                                                                                                                                  -> Handler
                                                                                                                                       (LockableFeature
                                                                                                                                          ConferenceCallingConfig))
                                                                                                                               :<|> Named
                                                                                                                                      '("ipatch",
                                                                                                                                        ConferenceCallingConfig)
                                                                                                                                      (TeamId
                                                                                                                                       -> LockableFeaturePatch
                                                                                                                                            ConferenceCallingConfig
                                                                                                                                       -> Handler
                                                                                                                                            (LockableFeature
                                                                                                                                               ConferenceCallingConfig))))
                                                                                                                        :<|> ((Named
                                                                                                                                 '("iget",
                                                                                                                                   SelfDeletingMessagesConfig)
                                                                                                                                 (TeamId
                                                                                                                                  -> Handler
                                                                                                                                       (LockableFeature
                                                                                                                                          SelfDeletingMessagesConfig))
                                                                                                                               :<|> (Named
                                                                                                                                       '("iput",
                                                                                                                                         SelfDeletingMessagesConfig)
                                                                                                                                       (TeamId
                                                                                                                                        -> Feature
                                                                                                                                             SelfDeletingMessagesConfig
                                                                                                                                        -> Handler
                                                                                                                                             (LockableFeature
                                                                                                                                                SelfDeletingMessagesConfig))
                                                                                                                                     :<|> Named
                                                                                                                                            '("ipatch",
                                                                                                                                              SelfDeletingMessagesConfig)
                                                                                                                                            (TeamId
                                                                                                                                             -> LockableFeaturePatch
                                                                                                                                                  SelfDeletingMessagesConfig
                                                                                                                                             -> Handler
                                                                                                                                                  (LockableFeature
                                                                                                                                                     SelfDeletingMessagesConfig))))
                                                                                                                              :<|> ((Named
                                                                                                                                       '("iget",
                                                                                                                                         GuestLinksConfig)
                                                                                                                                       (TeamId
                                                                                                                                        -> Handler
                                                                                                                                             (LockableFeature
                                                                                                                                                GuestLinksConfig))
                                                                                                                                     :<|> (Named
                                                                                                                                             '("iput",
                                                                                                                                               GuestLinksConfig)
                                                                                                                                             (TeamId
                                                                                                                                              -> Feature
                                                                                                                                                   GuestLinksConfig
                                                                                                                                              -> Handler
                                                                                                                                                   (LockableFeature
                                                                                                                                                      GuestLinksConfig))
                                                                                                                                           :<|> Named
                                                                                                                                                  '("ipatch",
                                                                                                                                                    GuestLinksConfig)
                                                                                                                                                  (TeamId
                                                                                                                                                   -> LockableFeaturePatch
                                                                                                                                                        GuestLinksConfig
                                                                                                                                                   -> Handler
                                                                                                                                                        (LockableFeature
                                                                                                                                                           GuestLinksConfig))))
                                                                                                                                    :<|> ((Named
                                                                                                                                             '("iget",
                                                                                                                                               SndFactorPasswordChallengeConfig)
                                                                                                                                             (TeamId
                                                                                                                                              -> Handler
                                                                                                                                                   (LockableFeature
                                                                                                                                                      SndFactorPasswordChallengeConfig))
                                                                                                                                           :<|> (Named
                                                                                                                                                   '("iput",
                                                                                                                                                     SndFactorPasswordChallengeConfig)
                                                                                                                                                   (TeamId
                                                                                                                                                    -> Feature
                                                                                                                                                         SndFactorPasswordChallengeConfig
                                                                                                                                                    -> Handler
                                                                                                                                                         (LockableFeature
                                                                                                                                                            SndFactorPasswordChallengeConfig))
                                                                                                                                                 :<|> Named
                                                                                                                                                        '("ipatch",
                                                                                                                                                          SndFactorPasswordChallengeConfig)
                                                                                                                                                        (TeamId
                                                                                                                                                         -> LockableFeaturePatch
                                                                                                                                                              SndFactorPasswordChallengeConfig
                                                                                                                                                         -> Handler
                                                                                                                                                              (LockableFeature
                                                                                                                                                                 SndFactorPasswordChallengeConfig))))
                                                                                                                                          :<|> ((Named
                                                                                                                                                   '("iget",
                                                                                                                                                     MLSConfig)
                                                                                                                                                   (TeamId
                                                                                                                                                    -> Handler
                                                                                                                                                         (LockableFeature
                                                                                                                                                            MLSConfig))
                                                                                                                                                 :<|> (Named
                                                                                                                                                         '("iput",
                                                                                                                                                           MLSConfig)
                                                                                                                                                         (TeamId
                                                                                                                                                          -> Feature
                                                                                                                                                               MLSConfig
                                                                                                                                                          -> Handler
                                                                                                                                                               (LockableFeature
                                                                                                                                                                  MLSConfig))
                                                                                                                                                       :<|> Named
                                                                                                                                                              '("ipatch",
                                                                                                                                                                MLSConfig)
                                                                                                                                                              (TeamId
                                                                                                                                                               -> LockableFeaturePatch
                                                                                                                                                                    MLSConfig
                                                                                                                                                               -> Handler
                                                                                                                                                                    (LockableFeature
                                                                                                                                                                       MLSConfig))))
                                                                                                                                                :<|> ((Named
                                                                                                                                                         '("iget",
                                                                                                                                                           ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                         (TeamId
                                                                                                                                                          -> Handler
                                                                                                                                                               (LockableFeature
                                                                                                                                                                  ExposeInvitationURLsToTeamAdminConfig))
                                                                                                                                                       :<|> (Named
                                                                                                                                                               '("iput",
                                                                                                                                                                 ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                               (TeamId
                                                                                                                                                                -> Feature
                                                                                                                                                                     ExposeInvitationURLsToTeamAdminConfig
                                                                                                                                                                -> Handler
                                                                                                                                                                     (LockableFeature
                                                                                                                                                                        ExposeInvitationURLsToTeamAdminConfig))
                                                                                                                                                             :<|> Named
                                                                                                                                                                    '("ipatch",
                                                                                                                                                                      ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                    (TeamId
                                                                                                                                                                     -> LockableFeaturePatch
                                                                                                                                                                          ExposeInvitationURLsToTeamAdminConfig
                                                                                                                                                                     -> Handler
                                                                                                                                                                          (LockableFeature
                                                                                                                                                                             ExposeInvitationURLsToTeamAdminConfig))))
                                                                                                                                                      :<|> ((Named
                                                                                                                                                               '("iget",
                                                                                                                                                                 OutlookCalIntegrationConfig)
                                                                                                                                                               (TeamId
                                                                                                                                                                -> Handler
                                                                                                                                                                     (LockableFeature
                                                                                                                                                                        OutlookCalIntegrationConfig))
                                                                                                                                                             :<|> (Named
                                                                                                                                                                     '("iput",
                                                                                                                                                                       OutlookCalIntegrationConfig)
                                                                                                                                                                     (TeamId
                                                                                                                                                                      -> Feature
                                                                                                                                                                           OutlookCalIntegrationConfig
                                                                                                                                                                      -> Handler
                                                                                                                                                                           (LockableFeature
                                                                                                                                                                              OutlookCalIntegrationConfig))
                                                                                                                                                                   :<|> Named
                                                                                                                                                                          '("ipatch",
                                                                                                                                                                            OutlookCalIntegrationConfig)
                                                                                                                                                                          (TeamId
                                                                                                                                                                           -> LockableFeaturePatch
                                                                                                                                                                                OutlookCalIntegrationConfig
                                                                                                                                                                           -> Handler
                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                   OutlookCalIntegrationConfig))))
                                                                                                                                                            :<|> ((Named
                                                                                                                                                                     '("iget",
                                                                                                                                                                       MlsE2EIdConfig)
                                                                                                                                                                     (TeamId
                                                                                                                                                                      -> Handler
                                                                                                                                                                           (LockableFeature
                                                                                                                                                                              MlsE2EIdConfig))
                                                                                                                                                                   :<|> (Named
                                                                                                                                                                           '("iput",
                                                                                                                                                                             MlsE2EIdConfig)
                                                                                                                                                                           (TeamId
                                                                                                                                                                            -> Feature
                                                                                                                                                                                 MlsE2EIdConfig
                                                                                                                                                                            -> Handler
                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                    MlsE2EIdConfig))
                                                                                                                                                                         :<|> Named
                                                                                                                                                                                '("ipatch",
                                                                                                                                                                                  MlsE2EIdConfig)
                                                                                                                                                                                (TeamId
                                                                                                                                                                                 -> LockableFeaturePatch
                                                                                                                                                                                      MlsE2EIdConfig
                                                                                                                                                                                 -> Handler
                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                         MlsE2EIdConfig))))
                                                                                                                                                                  :<|> ((Named
                                                                                                                                                                           '("iget",
                                                                                                                                                                             MlsMigrationConfig)
                                                                                                                                                                           (TeamId
                                                                                                                                                                            -> Handler
                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                    MlsMigrationConfig))
                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                 '("iput",
                                                                                                                                                                                   MlsMigrationConfig)
                                                                                                                                                                                 (TeamId
                                                                                                                                                                                  -> Feature
                                                                                                                                                                                       MlsMigrationConfig
                                                                                                                                                                                  -> Handler
                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                          MlsMigrationConfig))
                                                                                                                                                                               :<|> Named
                                                                                                                                                                                      '("ipatch",
                                                                                                                                                                                        MlsMigrationConfig)
                                                                                                                                                                                      (TeamId
                                                                                                                                                                                       -> LockableFeaturePatch
                                                                                                                                                                                            MlsMigrationConfig
                                                                                                                                                                                       -> Handler
                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                               MlsMigrationConfig))))
                                                                                                                                                                        :<|> ((Named
                                                                                                                                                                                 '("iget",
                                                                                                                                                                                   EnforceFileDownloadLocationConfig)
                                                                                                                                                                                 (TeamId
                                                                                                                                                                                  -> Handler
                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                          EnforceFileDownloadLocationConfig))
                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                       '("iput",
                                                                                                                                                                                         EnforceFileDownloadLocationConfig)
                                                                                                                                                                                       (TeamId
                                                                                                                                                                                        -> Feature
                                                                                                                                                                                             EnforceFileDownloadLocationConfig
                                                                                                                                                                                        -> Handler
                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                EnforceFileDownloadLocationConfig))
                                                                                                                                                                                     :<|> Named
                                                                                                                                                                                            '("ipatch",
                                                                                                                                                                                              EnforceFileDownloadLocationConfig)
                                                                                                                                                                                            (TeamId
                                                                                                                                                                                             -> LockableFeaturePatch
                                                                                                                                                                                                  EnforceFileDownloadLocationConfig
                                                                                                                                                                                             -> Handler
                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                     EnforceFileDownloadLocationConfig))))
                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                      '("iget",
                                                                                                                                                                                        LimitedEventFanoutConfig)
                                                                                                                                                                                      (TeamId
                                                                                                                                                                                       -> Handler
                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                               LimitedEventFanoutConfig))
                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                            '("iput",
                                                                                                                                                                                              LimitedEventFanoutConfig)
                                                                                                                                                                                            (TeamId
                                                                                                                                                                                             -> Feature
                                                                                                                                                                                                  LimitedEventFanoutConfig
                                                                                                                                                                                             -> Handler
                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                     LimitedEventFanoutConfig))
                                                                                                                                                                                          :<|> Named
                                                                                                                                                                                                 '("ipatch",
                                                                                                                                                                                                   LimitedEventFanoutConfig)
                                                                                                                                                                                                 (TeamId
                                                                                                                                                                                                  -> LockableFeaturePatch
                                                                                                                                                                                                       LimitedEventFanoutConfig
                                                                                                                                                                                                  -> Handler
                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                          LimitedEventFanoutConfig)))))))))))))))))))))))
                                                                 :<|> (Named
                                                                         '("ilock",
                                                                           FileSharingConfig)
                                                                         (TeamId
                                                                          -> LockStatus
                                                                          -> Handler
                                                                               LockStatusResponse)
                                                                       :<|> (Named
                                                                               '("ilock",
                                                                                 ConferenceCallingConfig)
                                                                               (TeamId
                                                                                -> LockStatus
                                                                                -> Handler
                                                                                     LockStatusResponse)
                                                                             :<|> (Named
                                                                                     '("ilock",
                                                                                       SelfDeletingMessagesConfig)
                                                                                     (TeamId
                                                                                      -> LockStatus
                                                                                      -> Handler
                                                                                           LockStatusResponse)
                                                                                   :<|> (Named
                                                                                           '("ilock",
                                                                                             GuestLinksConfig)
                                                                                           (TeamId
                                                                                            -> LockStatus
                                                                                            -> Handler
                                                                                                 LockStatusResponse)
                                                                                         :<|> (Named
                                                                                                 '("ilock",
                                                                                                   SndFactorPasswordChallengeConfig)
                                                                                                 (TeamId
                                                                                                  -> LockStatus
                                                                                                  -> Handler
                                                                                                       LockStatusResponse)
                                                                                               :<|> (Named
                                                                                                       '("ilock",
                                                                                                         MLSConfig)
                                                                                                       (TeamId
                                                                                                        -> LockStatus
                                                                                                        -> Handler
                                                                                                             LockStatusResponse)
                                                                                                     :<|> (Named
                                                                                                             '("ilock",
                                                                                                               OutlookCalIntegrationConfig)
                                                                                                             (TeamId
                                                                                                              -> LockStatus
                                                                                                              -> Handler
                                                                                                                   LockStatusResponse)
                                                                                                           :<|> (Named
                                                                                                                   '("ilock",
                                                                                                                     MlsE2EIdConfig)
                                                                                                                   (TeamId
                                                                                                                    -> LockStatus
                                                                                                                    -> Handler
                                                                                                                         LockStatusResponse)
                                                                                                                 :<|> (Named
                                                                                                                         '("ilock",
                                                                                                                           MlsMigrationConfig)
                                                                                                                         (TeamId
                                                                                                                          -> LockStatus
                                                                                                                          -> Handler
                                                                                                                               LockStatusResponse)
                                                                                                                       :<|> (Named
                                                                                                                               '("ilock",
                                                                                                                                 EnforceFileDownloadLocationConfig)
                                                                                                                               (TeamId
                                                                                                                                -> LockStatus
                                                                                                                                -> Handler
                                                                                                                                     LockStatusResponse)
                                                                                                                             :<|> (Named
                                                                                                                                     '("igetmulti",
                                                                                                                                       SearchVisibilityInboundConfig)
                                                                                                                                     (TeamFeatureNoConfigMultiRequest
                                                                                                                                      -> Handler
                                                                                                                                           (TeamFeatureNoConfigMultiResponse
                                                                                                                                              SearchVisibilityInboundConfig))
                                                                                                                                   :<|> Named
                                                                                                                                          "feature-configs-internal"
                                                                                                                                          (Maybe
                                                                                                                                             UserId
                                                                                                                                           -> Handler
                                                                                                                                                AllTeamFeatures)))))))))))))
                                                                :<|> (Named
                                                                        "get-federation-status"
                                                                        (QualifiedWithTag
                                                                           'QLocal UserId
                                                                         -> RemoteDomains
                                                                         -> Handler
                                                                              FederationStatus)
                                                                      :<|> ((Named
                                                                               "conversation-get-member"
                                                                               (ConvId
                                                                                -> UserId
                                                                                -> Handler
                                                                                     (Maybe Member))
                                                                             :<|> (Named
                                                                                     "conversation-accept-v2"
                                                                                     (QualifiedWithTag
                                                                                        'QLocal
                                                                                        UserId
                                                                                      -> Maybe
                                                                                           ConnId
                                                                                      -> ConvId
                                                                                      -> Handler
                                                                                           Conversation)
                                                                                   :<|> (Named
                                                                                           "conversation-block-unqualified"
                                                                                           (UserId
                                                                                            -> ConvId
                                                                                            -> Handler
                                                                                                 ())
                                                                                         :<|> (Named
                                                                                                 "conversation-block"
                                                                                                 (QualifiedWithTag
                                                                                                    'QLocal
                                                                                                    UserId
                                                                                                  -> Qualified
                                                                                                       ConvId
                                                                                                  -> Handler
                                                                                                       ())
                                                                                               :<|> (Named
                                                                                                       "conversation-unblock-unqualified"
                                                                                                       (QualifiedWithTag
                                                                                                          'QLocal
                                                                                                          UserId
                                                                                                        -> Maybe
                                                                                                             ConnId
                                                                                                        -> ConvId
                                                                                                        -> Handler
                                                                                                             Conversation)
                                                                                                     :<|> (Named
                                                                                                             "conversation-unblock"
                                                                                                             (QualifiedWithTag
                                                                                                                'QLocal
                                                                                                                UserId
                                                                                                              -> Maybe
                                                                                                                   ConnId
                                                                                                              -> Qualified
                                                                                                                   ConvId
                                                                                                              -> Handler
                                                                                                                   ())
                                                                                                           :<|> (Named
                                                                                                                   "conversation-meta"
                                                                                                                   (ConvId
                                                                                                                    -> Handler
                                                                                                                         ConversationMetadata)
                                                                                                                 :<|> (Named
                                                                                                                         "conversation-mls-one-to-one"
                                                                                                                         (QualifiedWithTag
                                                                                                                            'QLocal
                                                                                                                            UserId
                                                                                                                          -> Qualified
                                                                                                                               UserId
                                                                                                                          -> Handler
                                                                                                                               Conversation)
                                                                                                                       :<|> Named
                                                                                                                              "conversation-mls-one-to-one-established"
                                                                                                                              (QualifiedWithTag
                                                                                                                                 'QLocal
                                                                                                                                 UserId
                                                                                                                               -> Qualified
                                                                                                                                    UserId
                                                                                                                               -> Handler
                                                                                                                                    Bool)))))))))
                                                                            :<|> Named
                                                                                   "get-conversations-by-user"
                                                                                   (UserId
                                                                                    -> Handler
                                                                                         [EJPDConvInfo])))))))))))))
         :<|> ((Named
                  "on-conversation-created"
                  (Domain -> ConversationCreated ConvId -> Handler EmptyResponse)
                :<|> (Named
                        "get-conversations@v1"
                        (Domain
                         -> GetConversationsRequest -> Handler GetConversationsResponse)
                      :<|> (Named
                              "get-conversations"
                              (Domain
                               -> GetConversationsRequest -> Handler GetConversationsResponseV2)
                            :<|> (Named
                                    "leave-conversation"
                                    (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                                     -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                                     -> Dict (HasAnnotation 'Remote "brig" "get-users-by-ids")
                                     -> Dict (HasAnnotation 'Remote "brig" "api-version")
                                     -> Domain
                                     -> LeaveConversationRequest
                                     -> Handler LeaveConversationResponse)
                                  :<|> (Named
                                          "send-message"
                                          (Dict (HasAnnotation 'Remote "galley" "on-message-sent")
                                           -> Dict (HasAnnotation 'Remote "brig" "get-user-clients")
                                           -> Domain
                                           -> ProteusMessageSendRequest
                                           -> Handler MessageSendResponse)
                                        :<|> (Named
                                                "update-conversation"
                                                (Dict
                                                   (HasAnnotation
                                                      'Remote "galley" "on-conversation-updated")
                                                 -> Dict
                                                      (HasAnnotation
                                                         'Remote "galley" "on-mls-message-sent")
                                                 -> Dict
                                                      (HasAnnotation
                                                         'Remote "brig" "get-users-by-ids")
                                                 -> Dict
                                                      (HasAnnotation
                                                         'Remote "galley" "on-mls-message-sent")
                                                 -> Domain
                                                 -> ConversationUpdateRequest
                                                 -> Handler ConversationUpdateResponse)
                                              :<|> (Named
                                                      "mls-welcome"
                                                      (Domain
                                                       -> MLSWelcomeRequest
                                                       -> Handler MLSWelcomeResponse)
                                                    :<|> (Named
                                                            "send-mls-message"
                                                            (Dict
                                                               (HasAnnotation
                                                                  'Remote
                                                                  "galley"
                                                                  "on-conversation-updated")
                                                             -> Dict
                                                                  (HasAnnotation
                                                                     'Remote
                                                                     "galley"
                                                                     "on-mls-message-sent")
                                                             -> Dict
                                                                  (HasAnnotation
                                                                     'Remote
                                                                     "galley"
                                                                     "send-mls-message")
                                                             -> Dict
                                                                  (HasAnnotation
                                                                     'Remote
                                                                     "brig"
                                                                     "get-mls-clients")
                                                             -> Domain
                                                             -> MLSMessageSendRequest
                                                             -> Handler MLSMessageResponse)
                                                          :<|> (Named
                                                                  "send-mls-commit-bundle"
                                                                  (Dict
                                                                     (HasAnnotation
                                                                        'Remote
                                                                        "galley"
                                                                        "mls-welcome")
                                                                   -> Dict
                                                                        (HasAnnotation
                                                                           'Remote
                                                                           "galley"
                                                                           "on-conversation-updated")
                                                                   -> Dict
                                                                        (HasAnnotation
                                                                           'Remote
                                                                           "galley"
                                                                           "on-mls-message-sent")
                                                                   -> Dict
                                                                        (HasAnnotation
                                                                           'Remote
                                                                           "galley"
                                                                           "send-mls-commit-bundle")
                                                                   -> Dict
                                                                        (HasAnnotation
                                                                           'Remote
                                                                           "brig"
                                                                           "get-mls-clients")
                                                                   -> Dict
                                                                        (HasAnnotation
                                                                           'Remote
                                                                           "brig"
                                                                           "get-users-by-ids")
                                                                   -> Dict
                                                                        (HasAnnotation
                                                                           'Remote
                                                                           "brig"
                                                                           "api-version")
                                                                   -> Domain
                                                                   -> MLSMessageSendRequest
                                                                   -> Handler MLSMessageResponse)
                                                                :<|> (Named
                                                                        "query-group-info"
                                                                        (Domain
                                                                         -> GetGroupInfoRequest
                                                                         -> Handler
                                                                              GetGroupInfoResponse)
                                                                      :<|> (Named
                                                                              "update-typing-indicator"
                                                                              (Dict
                                                                                 (HasAnnotation
                                                                                    'Remote
                                                                                    "galley"
                                                                                    "on-typing-indicator-updated")
                                                                               -> Domain
                                                                               -> TypingDataUpdateRequest
                                                                               -> Handler
                                                                                    TypingDataUpdateResponse)
                                                                            :<|> (Named
                                                                                    "on-typing-indicator-updated"
                                                                                    (Domain
                                                                                     -> TypingDataUpdated
                                                                                     -> Handler
                                                                                          EmptyResponse)
                                                                                  :<|> (Named
                                                                                          "get-sub-conversation"
                                                                                          (Domain
                                                                                           -> GetSubConversationsRequest
                                                                                           -> Handler
                                                                                                GetSubConversationsResponse)
                                                                                        :<|> (Named
                                                                                                "delete-sub-conversation"
                                                                                                (Domain
                                                                                                 -> DeleteSubConversationFedRequest
                                                                                                 -> Handler
                                                                                                      DeleteSubConversationResponse)
                                                                                              :<|> (Named
                                                                                                      "leave-sub-conversation"
                                                                                                      (Dict
                                                                                                         (HasAnnotation
                                                                                                            'Remote
                                                                                                            "galley"
                                                                                                            "on-mls-message-sent")
                                                                                                       -> Domain
                                                                                                       -> LeaveSubConversationRequest
                                                                                                       -> Handler
                                                                                                            LeaveSubConversationResponse)
                                                                                                    :<|> (Named
                                                                                                            "get-one2one-conversation@v1"
                                                                                                            (Domain
                                                                                                             -> GetOne2OneConversationRequest
                                                                                                             -> Handler
                                                                                                                  GetOne2OneConversationResponse)
                                                                                                          :<|> (Named
                                                                                                                  "get-one2one-conversation"
                                                                                                                  (Domain
                                                                                                                   -> GetOne2OneConversationRequest
                                                                                                                   -> Handler
                                                                                                                        GetOne2OneConversationResponseV2)
                                                                                                                :<|> (Named
                                                                                                                        "on-client-removed"
                                                                                                                        (Domain
                                                                                                                         -> ClientRemovedRequest
                                                                                                                         -> Handler
                                                                                                                              EmptyResponse)
                                                                                                                      :<|> (Named
                                                                                                                              "on-message-sent"
                                                                                                                              (Domain
                                                                                                                               -> RemoteMessage
                                                                                                                                    ConvId
                                                                                                                               -> Handler
                                                                                                                                    EmptyResponse)
                                                                                                                            :<|> (Named
                                                                                                                                    "on-mls-message-sent"
                                                                                                                                    (Domain
                                                                                                                                     -> RemoteMLSMessage
                                                                                                                                     -> Handler
                                                                                                                                          EmptyResponse)
                                                                                                                                  :<|> (Named
                                                                                                                                          (Versioned
                                                                                                                                             'V0
                                                                                                                                             "on-conversation-updated")
                                                                                                                                          (Domain
                                                                                                                                           -> ConversationUpdateV0
                                                                                                                                           -> Handler
                                                                                                                                                EmptyResponse)
                                                                                                                                        :<|> (Named
                                                                                                                                                "on-conversation-updated"
                                                                                                                                                (Domain
                                                                                                                                                 -> ConversationUpdate
                                                                                                                                                 -> Handler
                                                                                                                                                      EmptyResponse)
                                                                                                                                              :<|> Named
                                                                                                                                                     "on-user-deleted-conversations"
                                                                                                                                                     (Domain
                                                                                                                                                      -> UserDeletedConversationsNotification
                                                                                                                                                      -> Handler
                                                                                                                                                           EmptyResponse)))))))))))))))))))))))
               :<|> Tagged Handler Application))
forall a b. a -> b -> a :<|> b
:<|> (forall x.
 Sem
   '[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,
     Error InvalidInput, Error InternalError, Error FederationError,
     Async, Delay, Fail, Embed IO, Error JSONResponse, Resource,
     Final IO]
   x
 -> Handler x)
-> API
     ("i"
      :> (Named
            "status"
            ("status" :> MultiVerb 'GET '[JSON] '[RespondEmpty 200 "OK"] ())
          :<|> (Named
                  "delete-user"
                  (Summary
                     "Remove a user from their teams and conversations and erase their clients"
                   :> (MakesFederatedCall 'Galley "on-conversation-updated"
                       :> (MakesFederatedCall 'Galley "on-mls-message-sent"
                           :> (ZLocalUser
                               :> (ZOptConn
                                   :> ("user"
                                       :> MultiVerb
                                            'DELETE
                                            '[JSON]
                                            '[RespondEmpty 200 "Remove a user from Galley"]
                                            ()))))))
                :<|> (Named
                        "connect"
                        (Summary "Create a connect conversation (deprecated)"
                         :> (MakesFederatedCall 'Brig "api-version"
                             :> (MakesFederatedCall 'Galley "on-conversation-created"
                                 :> (MakesFederatedCall 'Galley "on-conversation-updated"
                                     :> (CanThrow 'ConvNotFound
                                         :> (CanThrow 'InvalidOperation
                                             :> (CanThrow 'NotConnected
                                                 :> (CanThrow UnreachableBackends
                                                     :> (ZLocalUser
                                                         :> (ZOptConn
                                                             :> ("conversations"
                                                                 :> ("connect"
                                                                     :> (ReqBody '[JSON] Connect
                                                                         :> MultiVerb
                                                                              'POST
                                                                              '[JSON]
                                                                              '[WithHeaders
                                                                                  ConversationHeaders
                                                                                  Conversation
                                                                                  (VersionedRespond
                                                                                     'V6
                                                                                     200
                                                                                     "Conversation existed"
                                                                                     Conversation),
                                                                                WithHeaders
                                                                                  ConversationHeaders
                                                                                  Conversation
                                                                                  (VersionedRespond
                                                                                     'V6
                                                                                     201
                                                                                     "Conversation created"
                                                                                     Conversation)]
                                                                              (ResponseForExistedCreated
                                                                                 Conversation))))))))))))))
                      :<|> (Named
                              "get-conversation-clients"
                              (Summary "Get mls conversation client list"
                               :> (CanThrow 'ConvNotFound
                                   :> ("group"
                                       :> (Capture "gid" GroupId
                                           :> MultiVerb
                                                'GET
                                                '[JSON]
                                                '[Respond 200 "Clients" ClientList]
                                                ClientList))))
                            :<|> (Named
                                    "guard-legalhold-policy-conflicts"
                                    ("guard-legalhold-policy-conflicts"
                                     :> (CanThrow 'MissingLegalholdConsent
                                         :> (CanThrow 'MissingLegalholdConsentOldClients
                                             :> (ReqBody '[JSON] GuardLegalholdPolicyConflicts
                                                 :> MultiVerb
                                                      'PUT
                                                      '[JSON]
                                                      '[RespondEmpty 200 "Guard Legalhold Policy"]
                                                      ()))))
                                  :<|> (("legalhold"
                                         :> ("whitelisted-teams"
                                             :> (Capture "tid" TeamId
                                                 :> (Named
                                                       "set-team-legalhold-whitelisted"
                                                       (MultiVerb
                                                          'PUT
                                                          '[JSON]
                                                          '[RespondEmpty
                                                              200 "Team Legalhold Whitelisted"]
                                                          ())
                                                     :<|> (Named
                                                             "unset-team-legalhold-whitelisted"
                                                             (MultiVerb
                                                                'DELETE
                                                                '[JSON]
                                                                '[RespondEmpty
                                                                    204
                                                                    "Team Legalhold un-Whitelisted"]
                                                                ())
                                                           :<|> Named
                                                                  "get-team-legalhold-whitelisted"
                                                                  (MultiVerb
                                                                     'GET
                                                                     '[JSON]
                                                                     '[RespondEmpty
                                                                         404
                                                                         "Team not Legalhold Whitelisted",
                                                                       RespondEmpty
                                                                         200
                                                                         "Team Legalhold Whitelisted"]
                                                                     Bool))))))
                                        :<|> (("teams"
                                               :> (Capture "tid" TeamId
                                                   :> (Named
                                                         "get-team-internal"
                                                         (CanThrow 'TeamNotFound
                                                          :> Get '[JSON] TeamData)
                                                       :<|> (Named
                                                               "create-binding-team"
                                                               (ZUser
                                                                :> (ReqBody '[JSON] BindingNewTeam
                                                                    :> MultiVerb
                                                                         'PUT
                                                                         '[JSON]
                                                                         '[WithHeaders
                                                                             '[Header
                                                                                 "Location" TeamId]
                                                                             TeamId
                                                                             (RespondEmpty
                                                                                201 "OK")]
                                                                         TeamId))
                                                             :<|> (Named
                                                                     "delete-binding-team"
                                                                     (CanThrow 'NoBindingTeam
                                                                      :> (CanThrow
                                                                            'NotAOneMemberTeam
                                                                          :> (CanThrow
                                                                                'DeleteQueueFull
                                                                              :> (CanThrow
                                                                                    'TeamNotFound
                                                                                  :> (QueryFlag
                                                                                        "force"
                                                                                      :> MultiVerb
                                                                                           'DELETE
                                                                                           '[JSON]
                                                                                           '[RespondEmpty
                                                                                               202
                                                                                               "OK"]
                                                                                           ())))))
                                                                   :<|> (Named
                                                                           "get-team-name"
                                                                           ("name"
                                                                            :> (CanThrow
                                                                                  'TeamNotFound
                                                                                :> Get
                                                                                     '[JSON]
                                                                                     TeamName))
                                                                         :<|> (Named
                                                                                 "update-team-status"
                                                                                 ("status"
                                                                                  :> (CanThrow
                                                                                        'TeamNotFound
                                                                                      :> (CanThrow
                                                                                            'InvalidTeamStatusUpdate
                                                                                          :> (ReqBody
                                                                                                '[JSON]
                                                                                                TeamStatusUpdate
                                                                                              :> MultiVerb
                                                                                                   'PUT
                                                                                                   '[JSON]
                                                                                                   '[RespondEmpty
                                                                                                       200
                                                                                                       "OK"]
                                                                                                   ()))))
                                                                               :<|> (("members"
                                                                                      :> (Named
                                                                                            "unchecked-add-team-member"
                                                                                            (CanThrow
                                                                                               'TooManyTeamMembers
                                                                                             :> (CanThrow
                                                                                                   'TooManyTeamMembersOnTeamWithLegalhold
                                                                                                 :> (CanThrow
                                                                                                       'TooManyTeamAdmins
                                                                                                     :> (ReqBody
                                                                                                           '[JSON]
                                                                                                           NewTeamMember
                                                                                                         :> MultiVerb
                                                                                                              'POST
                                                                                                              '[JSON]
                                                                                                              '[RespondEmpty
                                                                                                                  200
                                                                                                                  "OK"]
                                                                                                              ()))))
                                                                                          :<|> (Named
                                                                                                  "unchecked-get-team-members"
                                                                                                  (QueryParam'
                                                                                                     '[Strict]
                                                                                                     "maxResults"
                                                                                                     (Range
                                                                                                        1
                                                                                                        HardTruncationLimit
                                                                                                        Int32)
                                                                                                   :> Get
                                                                                                        '[JSON]
                                                                                                        TeamMemberList)
                                                                                                :<|> (Named
                                                                                                        "unchecked-get-team-member"
                                                                                                        (Capture
                                                                                                           "uid"
                                                                                                           UserId
                                                                                                         :> (CanThrow
                                                                                                               'TeamMemberNotFound
                                                                                                             :> Get
                                                                                                                  '[JSON]
                                                                                                                  TeamMember))
                                                                                                      :<|> (Named
                                                                                                              "can-user-join-team"
                                                                                                              ("check"
                                                                                                               :> (CanThrow
                                                                                                                     'TooManyTeamMembersOnTeamWithLegalhold
                                                                                                                   :> MultiVerb
                                                                                                                        'GET
                                                                                                                        '[JSON]
                                                                                                                        '[RespondEmpty
                                                                                                                            200
                                                                                                                            "User can join"]
                                                                                                                        ()))
                                                                                                            :<|> Named
                                                                                                                   "unchecked-update-team-member"
                                                                                                                   (CanThrow
                                                                                                                      'AccessDenied
                                                                                                                    :> (CanThrow
                                                                                                                          'InvalidPermissions
                                                                                                                        :> (CanThrow
                                                                                                                              'TeamNotFound
                                                                                                                            :> (CanThrow
                                                                                                                                  'TeamMemberNotFound
                                                                                                                                :> (CanThrow
                                                                                                                                      'TooManyTeamAdmins
                                                                                                                                    :> (CanThrow
                                                                                                                                          'NotATeamMember
                                                                                                                                        :> (CanThrow
                                                                                                                                              OperationDenied
                                                                                                                                            :> (ReqBody
                                                                                                                                                  '[JSON]
                                                                                                                                                  NewTeamMember
                                                                                                                                                :> MultiVerb
                                                                                                                                                     'PUT
                                                                                                                                                     '[JSON]
                                                                                                                                                     '[RespondEmpty
                                                                                                                                                         200
                                                                                                                                                         ""]
                                                                                                                                                     ())))))))))))))
                                                                                     :<|> (Named
                                                                                             "user-is-team-owner"
                                                                                             ("is-team-owner"
                                                                                              :> (Capture
                                                                                                    "uid"
                                                                                                    UserId
                                                                                                  :> (CanThrow
                                                                                                        'AccessDenied
                                                                                                      :> (CanThrow
                                                                                                            'TeamMemberNotFound
                                                                                                          :> (CanThrow
                                                                                                                'NotATeamMember
                                                                                                              :> MultiVerb
                                                                                                                   'GET
                                                                                                                   '[JSON]
                                                                                                                   '[RespondEmpty
                                                                                                                       200
                                                                                                                       "User is team owner"]
                                                                                                                   ())))))
                                                                                           :<|> ("search-visibility"
                                                                                                 :> (Named
                                                                                                       "get-search-visibility-internal"
                                                                                                       (Get
                                                                                                          '[JSON]
                                                                                                          TeamSearchVisibilityView)
                                                                                                     :<|> Named
                                                                                                            "set-search-visibility-internal"
                                                                                                            (CanThrow
                                                                                                               'TeamSearchVisibilityNotEnabled
                                                                                                             :> (CanThrow
                                                                                                                   OperationDenied
                                                                                                                 :> (CanThrow
                                                                                                                       'NotATeamMember
                                                                                                                     :> (CanThrow
                                                                                                                           'TeamNotFound
                                                                                                                         :> (ReqBody
                                                                                                                               '[JSON]
                                                                                                                               TeamSearchVisibilityView
                                                                                                                             :> MultiVerb
                                                                                                                                  'PUT
                                                                                                                                  '[JSON]
                                                                                                                                  '[RespondEmpty
                                                                                                                                      204
                                                                                                                                      "OK"]
                                                                                                                                  ()))))))))))))))))
                                              :<|> ((Named
                                                       "get-team-members"
                                                       (CanThrow 'NonBindingTeam
                                                        :> (CanThrow 'TeamNotFound
                                                            :> ("users"
                                                                :> (Capture "uid" UserId
                                                                    :> ("team"
                                                                        :> ("members"
                                                                            :> Get
                                                                                 '[JSON]
                                                                                 TeamMemberList))))))
                                                     :<|> (Named
                                                             "get-team-id"
                                                             (CanThrow 'NonBindingTeam
                                                              :> (CanThrow 'TeamNotFound
                                                                  :> ("users"
                                                                      :> (Capture "uid" UserId
                                                                          :> ("team"
                                                                              :> Get
                                                                                   '[JSON]
                                                                                   TeamId)))))
                                                           :<|> (Named
                                                                   "test-get-clients"
                                                                   ("test"
                                                                    :> ("clients"
                                                                        :> (ZUser
                                                                            :> Get
                                                                                 '[JSON]
                                                                                 [ClientId])))
                                                                 :<|> (Named
                                                                         "test-add-client"
                                                                         ("clients"
                                                                          :> (ZUser
                                                                              :> (Capture
                                                                                    "cid" ClientId
                                                                                  :> MultiVerb
                                                                                       'POST
                                                                                       '[JSON]
                                                                                       '[RespondEmpty
                                                                                           200 "OK"]
                                                                                       ())))
                                                                       :<|> (Named
                                                                               "test-delete-client"
                                                                               ("clients"
                                                                                :> (ZUser
                                                                                    :> (Capture
                                                                                          "cid"
                                                                                          ClientId
                                                                                        :> MultiVerb
                                                                                             'DELETE
                                                                                             '[JSON]
                                                                                             '[RespondEmpty
                                                                                                 200
                                                                                                 "OK"]
                                                                                             ())))
                                                                             :<|> (Named
                                                                                     "add-service"
                                                                                     ("services"
                                                                                      :> (ReqBody
                                                                                            '[JSON]
                                                                                            Service
                                                                                          :> MultiVerb
                                                                                               'POST
                                                                                               '[JSON]
                                                                                               '[RespondEmpty
                                                                                                   200
                                                                                                   "OK"]
                                                                                               ()))
                                                                                   :<|> (Named
                                                                                           "delete-service"
                                                                                           ("services"
                                                                                            :> (ReqBody
                                                                                                  '[JSON]
                                                                                                  ServiceRef
                                                                                                :> MultiVerb
                                                                                                     'DELETE
                                                                                                     '[JSON]
                                                                                                     '[RespondEmpty
                                                                                                         200
                                                                                                         "OK"]
                                                                                                     ()))
                                                                                         :<|> (Named
                                                                                                 "i-add-bot"
                                                                                                 (CanThrow
                                                                                                    ('ActionDenied
                                                                                                       'AddConversationMember)
                                                                                                  :> (CanThrow
                                                                                                        'ConvNotFound
                                                                                                      :> (CanThrow
                                                                                                            'InvalidOperation
                                                                                                          :> (CanThrow
                                                                                                                'TooManyMembers
                                                                                                              :> ("bots"
                                                                                                                  :> (ZLocalUser
                                                                                                                      :> (ZConn
                                                                                                                          :> (ReqBody
                                                                                                                                '[JSON]
                                                                                                                                AddBot
                                                                                                                              :> Post
                                                                                                                                   '[JSON]
                                                                                                                                   Event))))))))
                                                                                               :<|> (Named
                                                                                                       "delete-bot"
                                                                                                       (CanThrow
                                                                                                          'ConvNotFound
                                                                                                        :> (CanThrow
                                                                                                              ('ActionDenied
                                                                                                                 'RemoveConversationMember)
                                                                                                            :> ("bots"
                                                                                                                :> (ZLocalUser
                                                                                                                    :> (ZOptConn
                                                                                                                        :> (ReqBody
                                                                                                                              '[JSON]
                                                                                                                              RemoveBot
                                                                                                                            :> MultiVerb
                                                                                                                                 'DELETE
                                                                                                                                 '[JSON]
                                                                                                                                 (UpdateResponses
                                                                                                                                    "Bot not found"
                                                                                                                                    "Bot deleted"
                                                                                                                                    Event)
                                                                                                                                 (UpdateResult
                                                                                                                                    Event)))))))
                                                                                                     :<|> (Named
                                                                                                             "put-custom-backend"
                                                                                                             ("custom-backend"
                                                                                                              :> ("by-domain"
                                                                                                                  :> (Capture
                                                                                                                        "domain"
                                                                                                                        Domain
                                                                                                                      :> (ReqBody
                                                                                                                            '[JSON]
                                                                                                                            CustomBackend
                                                                                                                          :> MultiVerb
                                                                                                                               'PUT
                                                                                                                               '[JSON]
                                                                                                                               '[RespondEmpty
                                                                                                                                   201
                                                                                                                                   "OK"]
                                                                                                                               ()))))
                                                                                                           :<|> Named
                                                                                                                  "delete-custom-backend"
                                                                                                                  ("custom-backend"
                                                                                                                   :> ("by-domain"
                                                                                                                       :> (Capture
                                                                                                                             "domain"
                                                                                                                             Domain
                                                                                                                           :> MultiVerb
                                                                                                                                'DELETE
                                                                                                                                '[JSON]
                                                                                                                                '[RespondEmpty
                                                                                                                                    200
                                                                                                                                    "OK"]
                                                                                                                                ())))))))))))))
                                                    :<|> (Named
                                                            "upsert-one2one"
                                                            (Summary
                                                               "Create or Update a connect or one2one conversation."
                                                             :> ("conversations"
                                                                 :> ("one2one"
                                                                     :> ("upsert"
                                                                         :> (ReqBody
                                                                               '[JSON]
                                                                               UpsertOne2OneConversationRequest
                                                                             :> MultiVerb
                                                                                  'POST
                                                                                  '[JSON]
                                                                                  '[RespondEmpty
                                                                                      200
                                                                                      "Upsert One2One Policy"]
                                                                                  ())))))
                                                          :<|> ((((Named
                                                                     '("iget", LegalholdConfig)
                                                                     (Description ""
                                                                      :> (Summary
                                                                            "Get config for legalhold"
                                                                          :> (CanThrow
                                                                                OperationDenied
                                                                              :> (CanThrow
                                                                                    'NotATeamMember
                                                                                  :> (CanThrow
                                                                                        'TeamNotFound
                                                                                      :> ("teams"
                                                                                          :> (Capture
                                                                                                "tid"
                                                                                                TeamId
                                                                                              :> ("features"
                                                                                                  :> ("legalhold"
                                                                                                      :> Get
                                                                                                           '[JSON]
                                                                                                           (LockableFeature
                                                                                                              LegalholdConfig))))))))))
                                                                   :<|> (Named
                                                                           '("iput",
                                                                             LegalholdConfig)
                                                                           (Description ""
                                                                            :> (Summary
                                                                                  "Put config for legalhold"
                                                                                :> (CanThrow
                                                                                      OperationDenied
                                                                                    :> (CanThrow
                                                                                          'NotATeamMember
                                                                                        :> (CanThrow
                                                                                              'TeamNotFound
                                                                                            :> (CanThrow
                                                                                                  TeamFeatureError
                                                                                                :> (CanThrowMany
                                                                                                      '[ 'ActionDenied
                                                                                                           'RemoveConversationMember,
                                                                                                         'CannotEnableLegalHoldServiceLargeTeam,
                                                                                                         'LegalHoldNotEnabled,
                                                                                                         'LegalHoldDisableUnimplemented,
                                                                                                         'LegalHoldServiceNotRegistered,
                                                                                                         'UserLegalHoldIllegalOperation,
                                                                                                         'LegalHoldCouldNotBlockConnections]
                                                                                                    :> ("teams"
                                                                                                        :> (Capture
                                                                                                              "tid"
                                                                                                              TeamId
                                                                                                            :> ("features"
                                                                                                                :> ("legalhold"
                                                                                                                    :> (ReqBody
                                                                                                                          '[JSON]
                                                                                                                          (Feature
                                                                                                                             LegalholdConfig)
                                                                                                                        :> Put
                                                                                                                             '[JSON]
                                                                                                                             (LockableFeature
                                                                                                                                LegalholdConfig)))))))))))))
                                                                         :<|> Named
                                                                                '("ipatch",
                                                                                  LegalholdConfig)
                                                                                (Description ""
                                                                                 :> (Summary
                                                                                       "Patch config for legalhold"
                                                                                     :> (CanThrow
                                                                                           OperationDenied
                                                                                         :> (CanThrow
                                                                                               'NotATeamMember
                                                                                             :> (CanThrow
                                                                                                   'TeamNotFound
                                                                                                 :> (CanThrow
                                                                                                       TeamFeatureError
                                                                                                     :> (CanThrowMany
                                                                                                           '[ 'ActionDenied
                                                                                                                'RemoveConversationMember,
                                                                                                              'CannotEnableLegalHoldServiceLargeTeam,
                                                                                                              'LegalHoldNotEnabled,
                                                                                                              'LegalHoldDisableUnimplemented,
                                                                                                              'LegalHoldServiceNotRegistered,
                                                                                                              'UserLegalHoldIllegalOperation,
                                                                                                              'LegalHoldCouldNotBlockConnections]
                                                                                                         :> ("teams"
                                                                                                             :> (Capture
                                                                                                                   "tid"
                                                                                                                   TeamId
                                                                                                                 :> ("features"
                                                                                                                     :> ("legalhold"
                                                                                                                         :> (ReqBody
                                                                                                                               '[JSON]
                                                                                                                               (LockableFeaturePatch
                                                                                                                                  LegalholdConfig)
                                                                                                                             :> Patch
                                                                                                                                  '[JSON]
                                                                                                                                  (LockableFeature
                                                                                                                                     LegalholdConfig)))))))))))))))
                                                                  :<|> ((Named
                                                                           '("iget", SSOConfig)
                                                                           (Description ""
                                                                            :> (Summary
                                                                                  "Get config for sso"
                                                                                :> (CanThrow
                                                                                      OperationDenied
                                                                                    :> (CanThrow
                                                                                          'NotATeamMember
                                                                                        :> (CanThrow
                                                                                              'TeamNotFound
                                                                                            :> ("teams"
                                                                                                :> (Capture
                                                                                                      "tid"
                                                                                                      TeamId
                                                                                                    :> ("features"
                                                                                                        :> ("sso"
                                                                                                            :> Get
                                                                                                                 '[JSON]
                                                                                                                 (LockableFeature
                                                                                                                    SSOConfig))))))))))
                                                                         :<|> (Named
                                                                                 '("iput",
                                                                                   SSOConfig)
                                                                                 (Description ""
                                                                                  :> (Summary
                                                                                        "Put config for sso"
                                                                                      :> (CanThrow
                                                                                            OperationDenied
                                                                                          :> (CanThrow
                                                                                                'NotATeamMember
                                                                                              :> (CanThrow
                                                                                                    'TeamNotFound
                                                                                                  :> (CanThrow
                                                                                                        TeamFeatureError
                                                                                                      :> (CanThrowMany
                                                                                                            '[]
                                                                                                          :> ("teams"
                                                                                                              :> (Capture
                                                                                                                    "tid"
                                                                                                                    TeamId
                                                                                                                  :> ("features"
                                                                                                                      :> ("sso"
                                                                                                                          :> (ReqBody
                                                                                                                                '[JSON]
                                                                                                                                (Feature
                                                                                                                                   SSOConfig)
                                                                                                                              :> Put
                                                                                                                                   '[JSON]
                                                                                                                                   (LockableFeature
                                                                                                                                      SSOConfig)))))))))))))
                                                                               :<|> Named
                                                                                      '("ipatch",
                                                                                        SSOConfig)
                                                                                      (Description
                                                                                         ""
                                                                                       :> (Summary
                                                                                             "Patch config for sso"
                                                                                           :> (CanThrow
                                                                                                 OperationDenied
                                                                                               :> (CanThrow
                                                                                                     'NotATeamMember
                                                                                                   :> (CanThrow
                                                                                                         'TeamNotFound
                                                                                                       :> (CanThrow
                                                                                                             TeamFeatureError
                                                                                                           :> (CanThrowMany
                                                                                                                 '[]
                                                                                                               :> ("teams"
                                                                                                                   :> (Capture
                                                                                                                         "tid"
                                                                                                                         TeamId
                                                                                                                       :> ("features"
                                                                                                                           :> ("sso"
                                                                                                                               :> (ReqBody
                                                                                                                                     '[JSON]
                                                                                                                                     (LockableFeaturePatch
                                                                                                                                        SSOConfig)
                                                                                                                                   :> Patch
                                                                                                                                        '[JSON]
                                                                                                                                        (LockableFeature
                                                                                                                                           SSOConfig)))))))))))))))
                                                                        :<|> ((Named
                                                                                 '("iget",
                                                                                   SearchVisibilityAvailableConfig)
                                                                                 (Description ""
                                                                                  :> (Summary
                                                                                        "Get config for searchVisibility"
                                                                                      :> (CanThrow
                                                                                            OperationDenied
                                                                                          :> (CanThrow
                                                                                                'NotATeamMember
                                                                                              :> (CanThrow
                                                                                                    'TeamNotFound
                                                                                                  :> ("teams"
                                                                                                      :> (Capture
                                                                                                            "tid"
                                                                                                            TeamId
                                                                                                          :> ("features"
                                                                                                              :> ("searchVisibility"
                                                                                                                  :> Get
                                                                                                                       '[JSON]
                                                                                                                       (LockableFeature
                                                                                                                          SearchVisibilityAvailableConfig))))))))))
                                                                               :<|> (Named
                                                                                       '("iput",
                                                                                         SearchVisibilityAvailableConfig)
                                                                                       (Description
                                                                                          ""
                                                                                        :> (Summary
                                                                                              "Put config for searchVisibility"
                                                                                            :> (CanThrow
                                                                                                  OperationDenied
                                                                                                :> (CanThrow
                                                                                                      'NotATeamMember
                                                                                                    :> (CanThrow
                                                                                                          'TeamNotFound
                                                                                                        :> (CanThrow
                                                                                                              TeamFeatureError
                                                                                                            :> (CanThrowMany
                                                                                                                  '[]
                                                                                                                :> ("teams"
                                                                                                                    :> (Capture
                                                                                                                          "tid"
                                                                                                                          TeamId
                                                                                                                        :> ("features"
                                                                                                                            :> ("searchVisibility"
                                                                                                                                :> (ReqBody
                                                                                                                                      '[JSON]
                                                                                                                                      (Feature
                                                                                                                                         SearchVisibilityAvailableConfig)
                                                                                                                                    :> Put
                                                                                                                                         '[JSON]
                                                                                                                                         (LockableFeature
                                                                                                                                            SearchVisibilityAvailableConfig)))))))))))))
                                                                                     :<|> Named
                                                                                            '("ipatch",
                                                                                              SearchVisibilityAvailableConfig)
                                                                                            (Description
                                                                                               ""
                                                                                             :> (Summary
                                                                                                   "Patch config for searchVisibility"
                                                                                                 :> (CanThrow
                                                                                                       OperationDenied
                                                                                                     :> (CanThrow
                                                                                                           'NotATeamMember
                                                                                                         :> (CanThrow
                                                                                                               'TeamNotFound
                                                                                                             :> (CanThrow
                                                                                                                   TeamFeatureError
                                                                                                                 :> (CanThrowMany
                                                                                                                       '[]
                                                                                                                     :> ("teams"
                                                                                                                         :> (Capture
                                                                                                                               "tid"
                                                                                                                               TeamId
                                                                                                                             :> ("features"
                                                                                                                                 :> ("searchVisibility"
                                                                                                                                     :> (ReqBody
                                                                                                                                           '[JSON]
                                                                                                                                           (LockableFeaturePatch
                                                                                                                                              SearchVisibilityAvailableConfig)
                                                                                                                                         :> Patch
                                                                                                                                              '[JSON]
                                                                                                                                              (LockableFeature
                                                                                                                                                 SearchVisibilityAvailableConfig)))))))))))))))
                                                                              :<|> ((Named
                                                                                       '("iget",
                                                                                         SearchVisibilityInboundConfig)
                                                                                       (Description
                                                                                          ""
                                                                                        :> (Summary
                                                                                              "Get config for searchVisibilityInbound"
                                                                                            :> (CanThrow
                                                                                                  OperationDenied
                                                                                                :> (CanThrow
                                                                                                      'NotATeamMember
                                                                                                    :> (CanThrow
                                                                                                          'TeamNotFound
                                                                                                        :> ("teams"
                                                                                                            :> (Capture
                                                                                                                  "tid"
                                                                                                                  TeamId
                                                                                                                :> ("features"
                                                                                                                    :> ("searchVisibilityInbound"
                                                                                                                        :> Get
                                                                                                                             '[JSON]
                                                                                                                             (LockableFeature
                                                                                                                                SearchVisibilityInboundConfig))))))))))
                                                                                     :<|> (Named
                                                                                             '("iput",
                                                                                               SearchVisibilityInboundConfig)
                                                                                             (Description
                                                                                                ""
                                                                                              :> (Summary
                                                                                                    "Put config for searchVisibilityInbound"
                                                                                                  :> (CanThrow
                                                                                                        OperationDenied
                                                                                                      :> (CanThrow
                                                                                                            'NotATeamMember
                                                                                                          :> (CanThrow
                                                                                                                'TeamNotFound
                                                                                                              :> (CanThrow
                                                                                                                    TeamFeatureError
                                                                                                                  :> (CanThrowMany
                                                                                                                        '[]
                                                                                                                      :> ("teams"
                                                                                                                          :> (Capture
                                                                                                                                "tid"
                                                                                                                                TeamId
                                                                                                                              :> ("features"
                                                                                                                                  :> ("searchVisibilityInbound"
                                                                                                                                      :> (ReqBody
                                                                                                                                            '[JSON]
                                                                                                                                            (Feature
                                                                                                                                               SearchVisibilityInboundConfig)
                                                                                                                                          :> Put
                                                                                                                                               '[JSON]
                                                                                                                                               (LockableFeature
                                                                                                                                                  SearchVisibilityInboundConfig)))))))))))))
                                                                                           :<|> Named
                                                                                                  '("ipatch",
                                                                                                    SearchVisibilityInboundConfig)
                                                                                                  (Description
                                                                                                     ""
                                                                                                   :> (Summary
                                                                                                         "Patch config for searchVisibilityInbound"
                                                                                                       :> (CanThrow
                                                                                                             OperationDenied
                                                                                                           :> (CanThrow
                                                                                                                 'NotATeamMember
                                                                                                               :> (CanThrow
                                                                                                                     'TeamNotFound
                                                                                                                   :> (CanThrow
                                                                                                                         TeamFeatureError
                                                                                                                       :> (CanThrowMany
                                                                                                                             '[]
                                                                                                                           :> ("teams"
                                                                                                                               :> (Capture
                                                                                                                                     "tid"
                                                                                                                                     TeamId
                                                                                                                                   :> ("features"
                                                                                                                                       :> ("searchVisibilityInbound"
                                                                                                                                           :> (ReqBody
                                                                                                                                                 '[JSON]
                                                                                                                                                 (LockableFeaturePatch
                                                                                                                                                    SearchVisibilityInboundConfig)
                                                                                                                                               :> Patch
                                                                                                                                                    '[JSON]
                                                                                                                                                    (LockableFeature
                                                                                                                                                       SearchVisibilityInboundConfig)))))))))))))))
                                                                                    :<|> ((Named
                                                                                             '("iget",
                                                                                               ValidateSAMLEmailsConfig)
                                                                                             (Description
                                                                                                ""
                                                                                              :> (Summary
                                                                                                    "Get config for validateSAMLemails"
                                                                                                  :> (CanThrow
                                                                                                        OperationDenied
                                                                                                      :> (CanThrow
                                                                                                            'NotATeamMember
                                                                                                          :> (CanThrow
                                                                                                                'TeamNotFound
                                                                                                              :> ("teams"
                                                                                                                  :> (Capture
                                                                                                                        "tid"
                                                                                                                        TeamId
                                                                                                                      :> ("features"
                                                                                                                          :> ("validateSAMLemails"
                                                                                                                              :> Get
                                                                                                                                   '[JSON]
                                                                                                                                   (LockableFeature
                                                                                                                                      ValidateSAMLEmailsConfig))))))))))
                                                                                           :<|> (Named
                                                                                                   '("iput",
                                                                                                     ValidateSAMLEmailsConfig)
                                                                                                   (Description
                                                                                                      ""
                                                                                                    :> (Summary
                                                                                                          "Put config for validateSAMLemails"
                                                                                                        :> (CanThrow
                                                                                                              OperationDenied
                                                                                                            :> (CanThrow
                                                                                                                  'NotATeamMember
                                                                                                                :> (CanThrow
                                                                                                                      'TeamNotFound
                                                                                                                    :> (CanThrow
                                                                                                                          TeamFeatureError
                                                                                                                        :> (CanThrowMany
                                                                                                                              '[]
                                                                                                                            :> ("teams"
                                                                                                                                :> (Capture
                                                                                                                                      "tid"
                                                                                                                                      TeamId
                                                                                                                                    :> ("features"
                                                                                                                                        :> ("validateSAMLemails"
                                                                                                                                            :> (ReqBody
                                                                                                                                                  '[JSON]
                                                                                                                                                  (Feature
                                                                                                                                                     ValidateSAMLEmailsConfig)
                                                                                                                                                :> Put
                                                                                                                                                     '[JSON]
                                                                                                                                                     (LockableFeature
                                                                                                                                                        ValidateSAMLEmailsConfig)))))))))))))
                                                                                                 :<|> Named
                                                                                                        '("ipatch",
                                                                                                          ValidateSAMLEmailsConfig)
                                                                                                        (Description
                                                                                                           ""
                                                                                                         :> (Summary
                                                                                                               "Patch config for validateSAMLemails"
                                                                                                             :> (CanThrow
                                                                                                                   OperationDenied
                                                                                                                 :> (CanThrow
                                                                                                                       'NotATeamMember
                                                                                                                     :> (CanThrow
                                                                                                                           'TeamNotFound
                                                                                                                         :> (CanThrow
                                                                                                                               TeamFeatureError
                                                                                                                             :> (CanThrowMany
                                                                                                                                   '[]
                                                                                                                                 :> ("teams"
                                                                                                                                     :> (Capture
                                                                                                                                           "tid"
                                                                                                                                           TeamId
                                                                                                                                         :> ("features"
                                                                                                                                             :> ("validateSAMLemails"
                                                                                                                                                 :> (ReqBody
                                                                                                                                                       '[JSON]
                                                                                                                                                       (LockableFeaturePatch
                                                                                                                                                          ValidateSAMLEmailsConfig)
                                                                                                                                                     :> Patch
                                                                                                                                                          '[JSON]
                                                                                                                                                          (LockableFeature
                                                                                                                                                             ValidateSAMLEmailsConfig)))))))))))))))
                                                                                          :<|> ((Named
                                                                                                   '("iget",
                                                                                                     DigitalSignaturesConfig)
                                                                                                   (Description
                                                                                                      ""
                                                                                                    :> (Summary
                                                                                                          "Get config for digitalSignatures"
                                                                                                        :> (CanThrow
                                                                                                              OperationDenied
                                                                                                            :> (CanThrow
                                                                                                                  'NotATeamMember
                                                                                                                :> (CanThrow
                                                                                                                      'TeamNotFound
                                                                                                                    :> ("teams"
                                                                                                                        :> (Capture
                                                                                                                              "tid"
                                                                                                                              TeamId
                                                                                                                            :> ("features"
                                                                                                                                :> ("digitalSignatures"
                                                                                                                                    :> Get
                                                                                                                                         '[JSON]
                                                                                                                                         (LockableFeature
                                                                                                                                            DigitalSignaturesConfig))))))))))
                                                                                                 :<|> (Named
                                                                                                         '("iput",
                                                                                                           DigitalSignaturesConfig)
                                                                                                         (Description
                                                                                                            ""
                                                                                                          :> (Summary
                                                                                                                "Put config for digitalSignatures"
                                                                                                              :> (CanThrow
                                                                                                                    OperationDenied
                                                                                                                  :> (CanThrow
                                                                                                                        'NotATeamMember
                                                                                                                      :> (CanThrow
                                                                                                                            'TeamNotFound
                                                                                                                          :> (CanThrow
                                                                                                                                TeamFeatureError
                                                                                                                              :> (CanThrowMany
                                                                                                                                    '[]
                                                                                                                                  :> ("teams"
                                                                                                                                      :> (Capture
                                                                                                                                            "tid"
                                                                                                                                            TeamId
                                                                                                                                          :> ("features"
                                                                                                                                              :> ("digitalSignatures"
                                                                                                                                                  :> (ReqBody
                                                                                                                                                        '[JSON]
                                                                                                                                                        (Feature
                                                                                                                                                           DigitalSignaturesConfig)
                                                                                                                                                      :> Put
                                                                                                                                                           '[JSON]
                                                                                                                                                           (LockableFeature
                                                                                                                                                              DigitalSignaturesConfig)))))))))))))
                                                                                                       :<|> Named
                                                                                                              '("ipatch",
                                                                                                                DigitalSignaturesConfig)
                                                                                                              (Description
                                                                                                                 ""
                                                                                                               :> (Summary
                                                                                                                     "Patch config for digitalSignatures"
                                                                                                                   :> (CanThrow
                                                                                                                         OperationDenied
                                                                                                                       :> (CanThrow
                                                                                                                             'NotATeamMember
                                                                                                                           :> (CanThrow
                                                                                                                                 'TeamNotFound
                                                                                                                               :> (CanThrow
                                                                                                                                     TeamFeatureError
                                                                                                                                   :> (CanThrowMany
                                                                                                                                         '[]
                                                                                                                                       :> ("teams"
                                                                                                                                           :> (Capture
                                                                                                                                                 "tid"
                                                                                                                                                 TeamId
                                                                                                                                               :> ("features"
                                                                                                                                                   :> ("digitalSignatures"
                                                                                                                                                       :> (ReqBody
                                                                                                                                                             '[JSON]
                                                                                                                                                             (LockableFeaturePatch
                                                                                                                                                                DigitalSignaturesConfig)
                                                                                                                                                           :> Patch
                                                                                                                                                                '[JSON]
                                                                                                                                                                (LockableFeature
                                                                                                                                                                   DigitalSignaturesConfig)))))))))))))))
                                                                                                :<|> ((Named
                                                                                                         '("iget",
                                                                                                           AppLockConfig)
                                                                                                         (Description
                                                                                                            ""
                                                                                                          :> (Summary
                                                                                                                "Get config for appLock"
                                                                                                              :> (CanThrow
                                                                                                                    OperationDenied
                                                                                                                  :> (CanThrow
                                                                                                                        'NotATeamMember
                                                                                                                      :> (CanThrow
                                                                                                                            'TeamNotFound
                                                                                                                          :> ("teams"
                                                                                                                              :> (Capture
                                                                                                                                    "tid"
                                                                                                                                    TeamId
                                                                                                                                  :> ("features"
                                                                                                                                      :> ("appLock"
                                                                                                                                          :> Get
                                                                                                                                               '[JSON]
                                                                                                                                               (LockableFeature
                                                                                                                                                  AppLockConfig))))))))))
                                                                                                       :<|> (Named
                                                                                                               '("iput",
                                                                                                                 AppLockConfig)
                                                                                                               (Description
                                                                                                                  ""
                                                                                                                :> (Summary
                                                                                                                      "Put config for appLock"
                                                                                                                    :> (CanThrow
                                                                                                                          OperationDenied
                                                                                                                        :> (CanThrow
                                                                                                                              'NotATeamMember
                                                                                                                            :> (CanThrow
                                                                                                                                  'TeamNotFound
                                                                                                                                :> (CanThrow
                                                                                                                                      TeamFeatureError
                                                                                                                                    :> (CanThrowMany
                                                                                                                                          '[]
                                                                                                                                        :> ("teams"
                                                                                                                                            :> (Capture
                                                                                                                                                  "tid"
                                                                                                                                                  TeamId
                                                                                                                                                :> ("features"
                                                                                                                                                    :> ("appLock"
                                                                                                                                                        :> (ReqBody
                                                                                                                                                              '[JSON]
                                                                                                                                                              (Feature
                                                                                                                                                                 AppLockConfig)
                                                                                                                                                            :> Put
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 (LockableFeature
                                                                                                                                                                    AppLockConfig)))))))))))))
                                                                                                             :<|> Named
                                                                                                                    '("ipatch",
                                                                                                                      AppLockConfig)
                                                                                                                    (Description
                                                                                                                       ""
                                                                                                                     :> (Summary
                                                                                                                           "Patch config for appLock"
                                                                                                                         :> (CanThrow
                                                                                                                               OperationDenied
                                                                                                                             :> (CanThrow
                                                                                                                                   'NotATeamMember
                                                                                                                                 :> (CanThrow
                                                                                                                                       'TeamNotFound
                                                                                                                                     :> (CanThrow
                                                                                                                                           TeamFeatureError
                                                                                                                                         :> (CanThrowMany
                                                                                                                                               '[]
                                                                                                                                             :> ("teams"
                                                                                                                                                 :> (Capture
                                                                                                                                                       "tid"
                                                                                                                                                       TeamId
                                                                                                                                                     :> ("features"
                                                                                                                                                         :> ("appLock"
                                                                                                                                                             :> (ReqBody
                                                                                                                                                                   '[JSON]
                                                                                                                                                                   (LockableFeaturePatch
                                                                                                                                                                      AppLockConfig)
                                                                                                                                                                 :> Patch
                                                                                                                                                                      '[JSON]
                                                                                                                                                                      (LockableFeature
                                                                                                                                                                         AppLockConfig)))))))))))))))
                                                                                                      :<|> ((Named
                                                                                                               '("iget",
                                                                                                                 FileSharingConfig)
                                                                                                               (Description
                                                                                                                  ""
                                                                                                                :> (Summary
                                                                                                                      "Get config for fileSharing"
                                                                                                                    :> (CanThrow
                                                                                                                          OperationDenied
                                                                                                                        :> (CanThrow
                                                                                                                              'NotATeamMember
                                                                                                                            :> (CanThrow
                                                                                                                                  'TeamNotFound
                                                                                                                                :> ("teams"
                                                                                                                                    :> (Capture
                                                                                                                                          "tid"
                                                                                                                                          TeamId
                                                                                                                                        :> ("features"
                                                                                                                                            :> ("fileSharing"
                                                                                                                                                :> Get
                                                                                                                                                     '[JSON]
                                                                                                                                                     (LockableFeature
                                                                                                                                                        FileSharingConfig))))))))))
                                                                                                             :<|> (Named
                                                                                                                     '("iput",
                                                                                                                       FileSharingConfig)
                                                                                                                     (Description
                                                                                                                        ""
                                                                                                                      :> (Summary
                                                                                                                            "Put config for fileSharing"
                                                                                                                          :> (CanThrow
                                                                                                                                OperationDenied
                                                                                                                              :> (CanThrow
                                                                                                                                    'NotATeamMember
                                                                                                                                  :> (CanThrow
                                                                                                                                        'TeamNotFound
                                                                                                                                      :> (CanThrow
                                                                                                                                            TeamFeatureError
                                                                                                                                          :> (CanThrowMany
                                                                                                                                                '[]
                                                                                                                                              :> ("teams"
                                                                                                                                                  :> (Capture
                                                                                                                                                        "tid"
                                                                                                                                                        TeamId
                                                                                                                                                      :> ("features"
                                                                                                                                                          :> ("fileSharing"
                                                                                                                                                              :> (ReqBody
                                                                                                                                                                    '[JSON]
                                                                                                                                                                    (Feature
                                                                                                                                                                       FileSharingConfig)
                                                                                                                                                                  :> Put
                                                                                                                                                                       '[JSON]
                                                                                                                                                                       (LockableFeature
                                                                                                                                                                          FileSharingConfig)))))))))))))
                                                                                                                   :<|> Named
                                                                                                                          '("ipatch",
                                                                                                                            FileSharingConfig)
                                                                                                                          (Description
                                                                                                                             ""
                                                                                                                           :> (Summary
                                                                                                                                 "Patch config for fileSharing"
                                                                                                                               :> (CanThrow
                                                                                                                                     OperationDenied
                                                                                                                                   :> (CanThrow
                                                                                                                                         'NotATeamMember
                                                                                                                                       :> (CanThrow
                                                                                                                                             'TeamNotFound
                                                                                                                                           :> (CanThrow
                                                                                                                                                 TeamFeatureError
                                                                                                                                               :> (CanThrowMany
                                                                                                                                                     '[]
                                                                                                                                                   :> ("teams"
                                                                                                                                                       :> (Capture
                                                                                                                                                             "tid"
                                                                                                                                                             TeamId
                                                                                                                                                           :> ("features"
                                                                                                                                                               :> ("fileSharing"
                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                         '[JSON]
                                                                                                                                                                         (LockableFeaturePatch
                                                                                                                                                                            FileSharingConfig)
                                                                                                                                                                       :> Patch
                                                                                                                                                                            '[JSON]
                                                                                                                                                                            (LockableFeature
                                                                                                                                                                               FileSharingConfig)))))))))))))))
                                                                                                            :<|> (Named
                                                                                                                    '("iget",
                                                                                                                      ClassifiedDomainsConfig)
                                                                                                                    (Description
                                                                                                                       ""
                                                                                                                     :> (Summary
                                                                                                                           "Get config for classifiedDomains"
                                                                                                                         :> (CanThrow
                                                                                                                               OperationDenied
                                                                                                                             :> (CanThrow
                                                                                                                                   'NotATeamMember
                                                                                                                                 :> (CanThrow
                                                                                                                                       'TeamNotFound
                                                                                                                                     :> ("teams"
                                                                                                                                         :> (Capture
                                                                                                                                               "tid"
                                                                                                                                               TeamId
                                                                                                                                             :> ("features"
                                                                                                                                                 :> ("classifiedDomains"
                                                                                                                                                     :> Get
                                                                                                                                                          '[JSON]
                                                                                                                                                          (LockableFeature
                                                                                                                                                             ClassifiedDomainsConfig))))))))))
                                                                                                                  :<|> ((Named
                                                                                                                           '("iget",
                                                                                                                             ConferenceCallingConfig)
                                                                                                                           (Description
                                                                                                                              ""
                                                                                                                            :> (Summary
                                                                                                                                  "Get config for conferenceCalling"
                                                                                                                                :> (CanThrow
                                                                                                                                      OperationDenied
                                                                                                                                    :> (CanThrow
                                                                                                                                          'NotATeamMember
                                                                                                                                        :> (CanThrow
                                                                                                                                              'TeamNotFound
                                                                                                                                            :> ("teams"
                                                                                                                                                :> (Capture
                                                                                                                                                      "tid"
                                                                                                                                                      TeamId
                                                                                                                                                    :> ("features"
                                                                                                                                                        :> ("conferenceCalling"
                                                                                                                                                            :> Get
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 (LockableFeature
                                                                                                                                                                    ConferenceCallingConfig))))))))))
                                                                                                                         :<|> (Named
                                                                                                                                 '("iput",
                                                                                                                                   ConferenceCallingConfig)
                                                                                                                                 (Description
                                                                                                                                    ""
                                                                                                                                  :> (Summary
                                                                                                                                        "Put config for conferenceCalling"
                                                                                                                                      :> (CanThrow
                                                                                                                                            OperationDenied
                                                                                                                                          :> (CanThrow
                                                                                                                                                'NotATeamMember
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'TeamNotFound
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        TeamFeatureError
                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                            '[]
                                                                                                                                                          :> ("teams"
                                                                                                                                                              :> (Capture
                                                                                                                                                                    "tid"
                                                                                                                                                                    TeamId
                                                                                                                                                                  :> ("features"
                                                                                                                                                                      :> ("conferenceCalling"
                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                '[JSON]
                                                                                                                                                                                (Feature
                                                                                                                                                                                   ConferenceCallingConfig)
                                                                                                                                                                              :> Put
                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                      ConferenceCallingConfig)))))))))))))
                                                                                                                               :<|> Named
                                                                                                                                      '("ipatch",
                                                                                                                                        ConferenceCallingConfig)
                                                                                                                                      (Description
                                                                                                                                         ""
                                                                                                                                       :> (Summary
                                                                                                                                             "Patch config for conferenceCalling"
                                                                                                                                           :> (CanThrow
                                                                                                                                                 OperationDenied
                                                                                                                                               :> (CanThrow
                                                                                                                                                     'NotATeamMember
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'TeamNotFound
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             TeamFeatureError
                                                                                                                                                           :> (CanThrowMany
                                                                                                                                                                 '[]
                                                                                                                                                               :> ("teams"
                                                                                                                                                                   :> (Capture
                                                                                                                                                                         "tid"
                                                                                                                                                                         TeamId
                                                                                                                                                                       :> ("features"
                                                                                                                                                                           :> ("conferenceCalling"
                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                     (LockableFeaturePatch
                                                                                                                                                                                        ConferenceCallingConfig)
                                                                                                                                                                                   :> Patch
                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                           ConferenceCallingConfig)))))))))))))))
                                                                                                                        :<|> ((Named
                                                                                                                                 '("iget",
                                                                                                                                   SelfDeletingMessagesConfig)
                                                                                                                                 (Description
                                                                                                                                    ""
                                                                                                                                  :> (Summary
                                                                                                                                        "Get config for selfDeletingMessages"
                                                                                                                                      :> (CanThrow
                                                                                                                                            OperationDenied
                                                                                                                                          :> (CanThrow
                                                                                                                                                'NotATeamMember
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'TeamNotFound
                                                                                                                                                  :> ("teams"
                                                                                                                                                      :> (Capture
                                                                                                                                                            "tid"
                                                                                                                                                            TeamId
                                                                                                                                                          :> ("features"
                                                                                                                                                              :> ("selfDeletingMessages"
                                                                                                                                                                  :> Get
                                                                                                                                                                       '[JSON]
                                                                                                                                                                       (LockableFeature
                                                                                                                                                                          SelfDeletingMessagesConfig))))))))))
                                                                                                                               :<|> (Named
                                                                                                                                       '("iput",
                                                                                                                                         SelfDeletingMessagesConfig)
                                                                                                                                       (Description
                                                                                                                                          ""
                                                                                                                                        :> (Summary
                                                                                                                                              "Put config for selfDeletingMessages"
                                                                                                                                            :> (CanThrow
                                                                                                                                                  OperationDenied
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'NotATeamMember
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'TeamNotFound
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              TeamFeatureError
                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                  '[]
                                                                                                                                                                :> ("teams"
                                                                                                                                                                    :> (Capture
                                                                                                                                                                          "tid"
                                                                                                                                                                          TeamId
                                                                                                                                                                        :> ("features"
                                                                                                                                                                            :> ("selfDeletingMessages"
                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                      (Feature
                                                                                                                                                                                         SelfDeletingMessagesConfig)
                                                                                                                                                                                    :> Put
                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                            SelfDeletingMessagesConfig)))))))))))))
                                                                                                                                     :<|> Named
                                                                                                                                            '("ipatch",
                                                                                                                                              SelfDeletingMessagesConfig)
                                                                                                                                            (Description
                                                                                                                                               ""
                                                                                                                                             :> (Summary
                                                                                                                                                   "Patch config for selfDeletingMessages"
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       OperationDenied
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'NotATeamMember
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'TeamNotFound
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   TeamFeatureError
                                                                                                                                                                 :> (CanThrowMany
                                                                                                                                                                       '[]
                                                                                                                                                                     :> ("teams"
                                                                                                                                                                         :> (Capture
                                                                                                                                                                               "tid"
                                                                                                                                                                               TeamId
                                                                                                                                                                             :> ("features"
                                                                                                                                                                                 :> ("selfDeletingMessages"
                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                           (LockableFeaturePatch
                                                                                                                                                                                              SelfDeletingMessagesConfig)
                                                                                                                                                                                         :> Patch
                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                 SelfDeletingMessagesConfig)))))))))))))))
                                                                                                                              :<|> ((Named
                                                                                                                                       '("iget",
                                                                                                                                         GuestLinksConfig)
                                                                                                                                       (Description
                                                                                                                                          ""
                                                                                                                                        :> (Summary
                                                                                                                                              "Get config for conversationGuestLinks"
                                                                                                                                            :> (CanThrow
                                                                                                                                                  OperationDenied
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'NotATeamMember
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'TeamNotFound
                                                                                                                                                        :> ("teams"
                                                                                                                                                            :> (Capture
                                                                                                                                                                  "tid"
                                                                                                                                                                  TeamId
                                                                                                                                                                :> ("features"
                                                                                                                                                                    :> ("conversationGuestLinks"
                                                                                                                                                                        :> Get
                                                                                                                                                                             '[JSON]
                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                GuestLinksConfig))))))))))
                                                                                                                                     :<|> (Named
                                                                                                                                             '("iput",
                                                                                                                                               GuestLinksConfig)
                                                                                                                                             (Description
                                                                                                                                                ""
                                                                                                                                              :> (Summary
                                                                                                                                                    "Put config for conversationGuestLinks"
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        OperationDenied
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'NotATeamMember
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'TeamNotFound
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    TeamFeatureError
                                                                                                                                                                  :> (CanThrowMany
                                                                                                                                                                        '[]
                                                                                                                                                                      :> ("teams"
                                                                                                                                                                          :> (Capture
                                                                                                                                                                                "tid"
                                                                                                                                                                                TeamId
                                                                                                                                                                              :> ("features"
                                                                                                                                                                                  :> ("conversationGuestLinks"
                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                            (Feature
                                                                                                                                                                                               GuestLinksConfig)
                                                                                                                                                                                          :> Put
                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                  GuestLinksConfig)))))))))))))
                                                                                                                                           :<|> Named
                                                                                                                                                  '("ipatch",
                                                                                                                                                    GuestLinksConfig)
                                                                                                                                                  (Description
                                                                                                                                                     ""
                                                                                                                                                   :> (Summary
                                                                                                                                                         "Patch config for conversationGuestLinks"
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             OperationDenied
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 'NotATeamMember
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         TeamFeatureError
                                                                                                                                                                       :> (CanThrowMany
                                                                                                                                                                             '[]
                                                                                                                                                                           :> ("teams"
                                                                                                                                                                               :> (Capture
                                                                                                                                                                                     "tid"
                                                                                                                                                                                     TeamId
                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                       :> ("conversationGuestLinks"
                                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                 (LockableFeaturePatch
                                                                                                                                                                                                    GuestLinksConfig)
                                                                                                                                                                                               :> Patch
                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                       GuestLinksConfig)))))))))))))))
                                                                                                                                    :<|> ((Named
                                                                                                                                             '("iget",
                                                                                                                                               SndFactorPasswordChallengeConfig)
                                                                                                                                             (Description
                                                                                                                                                ""
                                                                                                                                              :> (Summary
                                                                                                                                                    "Get config for sndFactorPasswordChallenge"
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        OperationDenied
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'NotATeamMember
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'TeamNotFound
                                                                                                                                                              :> ("teams"
                                                                                                                                                                  :> (Capture
                                                                                                                                                                        "tid"
                                                                                                                                                                        TeamId
                                                                                                                                                                      :> ("features"
                                                                                                                                                                          :> ("sndFactorPasswordChallenge"
                                                                                                                                                                              :> Get
                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                      SndFactorPasswordChallengeConfig))))))))))
                                                                                                                                           :<|> (Named
                                                                                                                                                   '("iput",
                                                                                                                                                     SndFactorPasswordChallengeConfig)
                                                                                                                                                   (Description
                                                                                                                                                      ""
                                                                                                                                                    :> (Summary
                                                                                                                                                          "Put config for sndFactorPasswordChallenge"
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              OperationDenied
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          TeamFeatureError
                                                                                                                                                                        :> (CanThrowMany
                                                                                                                                                                              '[]
                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                :> (Capture
                                                                                                                                                                                      "tid"
                                                                                                                                                                                      TeamId
                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                        :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                  (Feature
                                                                                                                                                                                                     SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                :> Put
                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                        SndFactorPasswordChallengeConfig)))))))))))))
                                                                                                                                                 :<|> Named
                                                                                                                                                        '("ipatch",
                                                                                                                                                          SndFactorPasswordChallengeConfig)
                                                                                                                                                        (Description
                                                                                                                                                           ""
                                                                                                                                                         :> (Summary
                                                                                                                                                               "Patch config for sndFactorPasswordChallenge"
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   OperationDenied
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               TeamFeatureError
                                                                                                                                                                             :> (CanThrowMany
                                                                                                                                                                                   '[]
                                                                                                                                                                                 :> ("teams"
                                                                                                                                                                                     :> (Capture
                                                                                                                                                                                           "tid"
                                                                                                                                                                                           TeamId
                                                                                                                                                                                         :> ("features"
                                                                                                                                                                                             :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                       (LockableFeaturePatch
                                                                                                                                                                                                          SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                     :> Patch
                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                             SndFactorPasswordChallengeConfig)))))))))))))))
                                                                                                                                          :<|> ((Named
                                                                                                                                                   '("iget",
                                                                                                                                                     MLSConfig)
                                                                                                                                                   (Description
                                                                                                                                                      ""
                                                                                                                                                    :> (Summary
                                                                                                                                                          "Get config for mls"
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              OperationDenied
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                    :> ("teams"
                                                                                                                                                                        :> (Capture
                                                                                                                                                                              "tid"
                                                                                                                                                                              TeamId
                                                                                                                                                                            :> ("features"
                                                                                                                                                                                :> ("mls"
                                                                                                                                                                                    :> Get
                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                            MLSConfig))))))))))
                                                                                                                                                 :<|> (Named
                                                                                                                                                         '("iput",
                                                                                                                                                           MLSConfig)
                                                                                                                                                         (Description
                                                                                                                                                            ""
                                                                                                                                                          :> (Summary
                                                                                                                                                                "Put config for mls"
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    OperationDenied
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                TeamFeatureError
                                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                                    '[]
                                                                                                                                                                                  :> ("teams"
                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                            "tid"
                                                                                                                                                                                            TeamId
                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                              :> ("mls"
                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                        (Feature
                                                                                                                                                                                                           MLSConfig)
                                                                                                                                                                                                      :> Put
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                              MLSConfig)))))))))))))
                                                                                                                                                       :<|> Named
                                                                                                                                                              '("ipatch",
                                                                                                                                                                MLSConfig)
                                                                                                                                                              (Description
                                                                                                                                                                 ""
                                                                                                                                                               :> (Summary
                                                                                                                                                                     "Patch config for mls"
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         OperationDenied
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     TeamFeatureError
                                                                                                                                                                                   :> (CanThrowMany
                                                                                                                                                                                         '[]
                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                 TeamId
                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                   :> ("mls"
                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                             (LockableFeaturePatch
                                                                                                                                                                                                                MLSConfig)
                                                                                                                                                                                                           :> Patch
                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                   MLSConfig)))))))))))))))
                                                                                                                                                :<|> ((Named
                                                                                                                                                         '("iget",
                                                                                                                                                           ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                         (Description
                                                                                                                                                            ""
                                                                                                                                                          :> (Summary
                                                                                                                                                                "Get config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    OperationDenied
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                          :> ("teams"
                                                                                                                                                                              :> (Capture
                                                                                                                                                                                    "tid"
                                                                                                                                                                                    TeamId
                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                      :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                          :> Get
                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                  ExposeInvitationURLsToTeamAdminConfig))))))))))
                                                                                                                                                       :<|> (Named
                                                                                                                                                               '("iput",
                                                                                                                                                                 ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                               (Description
                                                                                                                                                                  ""
                                                                                                                                                                :> (Summary
                                                                                                                                                                      "Put config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          OperationDenied
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      TeamFeatureError
                                                                                                                                                                                    :> (CanThrowMany
                                                                                                                                                                                          '[]
                                                                                                                                                                                        :> ("teams"
                                                                                                                                                                                            :> (Capture
                                                                                                                                                                                                  "tid"
                                                                                                                                                                                                  TeamId
                                                                                                                                                                                                :> ("features"
                                                                                                                                                                                                    :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                              (Feature
                                                                                                                                                                                                                 ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                                            :> Put
                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                    ExposeInvitationURLsToTeamAdminConfig)))))))))))))
                                                                                                                                                             :<|> Named
                                                                                                                                                                    '("ipatch",
                                                                                                                                                                      ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                    (Description
                                                                                                                                                                       ""
                                                                                                                                                                     :> (Summary
                                                                                                                                                                           "Patch config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               OperationDenied
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           TeamFeatureError
                                                                                                                                                                                         :> (CanThrowMany
                                                                                                                                                                                               '[]
                                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                       "tid"
                                                                                                                                                                                                       TeamId
                                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                                         :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                   (LockableFeaturePatch
                                                                                                                                                                                                                      ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                                                 :> Patch
                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                         ExposeInvitationURLsToTeamAdminConfig)))))))))))))))
                                                                                                                                                      :<|> ((Named
                                                                                                                                                               '("iget",
                                                                                                                                                                 OutlookCalIntegrationConfig)
                                                                                                                                                               (Description
                                                                                                                                                                  ""
                                                                                                                                                                :> (Summary
                                                                                                                                                                      "Get config for outlookCalIntegration"
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          OperationDenied
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                          "tid"
                                                                                                                                                                                          TeamId
                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                            :> ("outlookCalIntegration"
                                                                                                                                                                                                :> Get
                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                        OutlookCalIntegrationConfig))))))))))
                                                                                                                                                             :<|> (Named
                                                                                                                                                                     '("iput",
                                                                                                                                                                       OutlookCalIntegrationConfig)
                                                                                                                                                                     (Description
                                                                                                                                                                        ""
                                                                                                                                                                      :> (Summary
                                                                                                                                                                            "Put config for outlookCalIntegration"
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                OperationDenied
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            TeamFeatureError
                                                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                                                '[]
                                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                        "tid"
                                                                                                                                                                                                        TeamId
                                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                                          :> ("outlookCalIntegration"
                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                    (Feature
                                                                                                                                                                                                                       OutlookCalIntegrationConfig)
                                                                                                                                                                                                                  :> Put
                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                          OutlookCalIntegrationConfig)))))))))))))
                                                                                                                                                                   :<|> Named
                                                                                                                                                                          '("ipatch",
                                                                                                                                                                            OutlookCalIntegrationConfig)
                                                                                                                                                                          (Description
                                                                                                                                                                             ""
                                                                                                                                                                           :> (Summary
                                                                                                                                                                                 "Patch config for outlookCalIntegration"
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 TeamFeatureError
                                                                                                                                                                                               :> (CanThrowMany
                                                                                                                                                                                                     '[]
                                                                                                                                                                                                   :> ("teams"
                                                                                                                                                                                                       :> (Capture
                                                                                                                                                                                                             "tid"
                                                                                                                                                                                                             TeamId
                                                                                                                                                                                                           :> ("features"
                                                                                                                                                                                                               :> ("outlookCalIntegration"
                                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                         (LockableFeaturePatch
                                                                                                                                                                                                                            OutlookCalIntegrationConfig)
                                                                                                                                                                                                                       :> Patch
                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                               OutlookCalIntegrationConfig)))))))))))))))
                                                                                                                                                            :<|> ((Named
                                                                                                                                                                     '("iget",
                                                                                                                                                                       MlsE2EIdConfig)
                                                                                                                                                                     (Description
                                                                                                                                                                        ""
                                                                                                                                                                      :> (Summary
                                                                                                                                                                            "Get config for mlsE2EId"
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                OperationDenied
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                      :> ("teams"
                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                "tid"
                                                                                                                                                                                                TeamId
                                                                                                                                                                                              :> ("features"
                                                                                                                                                                                                  :> ("mlsE2EId"
                                                                                                                                                                                                      :> Get
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                              MlsE2EIdConfig))))))))))
                                                                                                                                                                   :<|> (Named
                                                                                                                                                                           '("iput",
                                                                                                                                                                             MlsE2EIdConfig)
                                                                                                                                                                           (Description
                                                                                                                                                                              ""
                                                                                                                                                                            :> (Summary
                                                                                                                                                                                  "Put config for mlsE2EId"
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  TeamFeatureError
                                                                                                                                                                                                :> (CanThrowMany
                                                                                                                                                                                                      '[]
                                                                                                                                                                                                    :> ("teams"
                                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                                              "tid"
                                                                                                                                                                                                              TeamId
                                                                                                                                                                                                            :> ("features"
                                                                                                                                                                                                                :> ("mlsE2EId"
                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                          (Feature
                                                                                                                                                                                                                             MlsE2EIdConfig)
                                                                                                                                                                                                                        :> Put
                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                MlsE2EIdConfig)))))))))))))
                                                                                                                                                                         :<|> Named
                                                                                                                                                                                '("ipatch",
                                                                                                                                                                                  MlsE2EIdConfig)
                                                                                                                                                                                (Description
                                                                                                                                                                                   ""
                                                                                                                                                                                 :> (Summary
                                                                                                                                                                                       "Patch config for mlsE2EId"
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           OperationDenied
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       TeamFeatureError
                                                                                                                                                                                                     :> (CanThrowMany
                                                                                                                                                                                                           '[]
                                                                                                                                                                                                         :> ("teams"
                                                                                                                                                                                                             :> (Capture
                                                                                                                                                                                                                   "tid"
                                                                                                                                                                                                                   TeamId
                                                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                                                     :> ("mlsE2EId"
                                                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                               (LockableFeaturePatch
                                                                                                                                                                                                                                  MlsE2EIdConfig)
                                                                                                                                                                                                                             :> Patch
                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                     MlsE2EIdConfig)))))))))))))))
                                                                                                                                                                  :<|> ((Named
                                                                                                                                                                           '("iget",
                                                                                                                                                                             MlsMigrationConfig)
                                                                                                                                                                           (Description
                                                                                                                                                                              ""
                                                                                                                                                                            :> (Summary
                                                                                                                                                                                  "Get config for mlsMigration"
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                      "tid"
                                                                                                                                                                                                      TeamId
                                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                                        :> ("mlsMigration"
                                                                                                                                                                                                            :> Get
                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                    MlsMigrationConfig))))))))))
                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                 '("iput",
                                                                                                                                                                                   MlsMigrationConfig)
                                                                                                                                                                                 (Description
                                                                                                                                                                                    ""
                                                                                                                                                                                  :> (Summary
                                                                                                                                                                                        "Put config for mlsMigration"
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                                                            '[]
                                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                                      :> ("mlsMigration"
                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                (Feature
                                                                                                                                                                                                                                   MlsMigrationConfig)
                                                                                                                                                                                                                              :> Put
                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                      MlsMigrationConfig)))))))))))))
                                                                                                                                                                               :<|> Named
                                                                                                                                                                                      '("ipatch",
                                                                                                                                                                                        MlsMigrationConfig)
                                                                                                                                                                                      (Description
                                                                                                                                                                                         ""
                                                                                                                                                                                       :> (Summary
                                                                                                                                                                                             "Patch config for mlsMigration"
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 OperationDenied
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                             TeamFeatureError
                                                                                                                                                                                                           :> (CanThrowMany
                                                                                                                                                                                                                 '[]
                                                                                                                                                                                                               :> ("teams"
                                                                                                                                                                                                                   :> (Capture
                                                                                                                                                                                                                         "tid"
                                                                                                                                                                                                                         TeamId
                                                                                                                                                                                                                       :> ("features"
                                                                                                                                                                                                                           :> ("mlsMigration"
                                                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                     (LockableFeaturePatch
                                                                                                                                                                                                                                        MlsMigrationConfig)
                                                                                                                                                                                                                                   :> Patch
                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                                                           MlsMigrationConfig)))))))))))))))
                                                                                                                                                                        :<|> ((Named
                                                                                                                                                                                 '("iget",
                                                                                                                                                                                   EnforceFileDownloadLocationConfig)
                                                                                                                                                                                 (Description
                                                                                                                                                                                    "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                  :> (Summary
                                                                                                                                                                                        "Get config for enforceFileDownloadLocation"
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                  :> ("teams"
                                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                                            "tid"
                                                                                                                                                                                                            TeamId
                                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                                              :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                  :> Get
                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                          EnforceFileDownloadLocationConfig))))))))))
                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                       '("iput",
                                                                                                                                                                                         EnforceFileDownloadLocationConfig)
                                                                                                                                                                                       (Description
                                                                                                                                                                                          "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                        :> (Summary
                                                                                                                                                                                              "Put config for enforceFileDownloadLocation"
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                              TeamFeatureError
                                                                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                                                                  '[]
                                                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                                          "tid"
                                                                                                                                                                                                                          TeamId
                                                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                                                            :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                      (Feature
                                                                                                                                                                                                                                         EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                    :> Put
                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                                            EnforceFileDownloadLocationConfig)))))))))))))
                                                                                                                                                                                     :<|> Named
                                                                                                                                                                                            '("ipatch",
                                                                                                                                                                                              EnforceFileDownloadLocationConfig)
                                                                                                                                                                                            (Description
                                                                                                                                                                                               "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                             :> (Summary
                                                                                                                                                                                                   "Patch config for enforceFileDownloadLocation"
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                   TeamFeatureError
                                                                                                                                                                                                                 :> (CanThrowMany
                                                                                                                                                                                                                       '[]
                                                                                                                                                                                                                     :> ("teams"
                                                                                                                                                                                                                         :> (Capture
                                                                                                                                                                                                                               "tid"
                                                                                                                                                                                                                               TeamId
                                                                                                                                                                                                                             :> ("features"
                                                                                                                                                                                                                                 :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                           (LockableFeaturePatch
                                                                                                                                                                                                                                              EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                         :> Patch
                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                                 EnforceFileDownloadLocationConfig)))))))))))))))
                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                      '("iget",
                                                                                                                                                                                        LimitedEventFanoutConfig)
                                                                                                                                                                                      (Description
                                                                                                                                                                                         ""
                                                                                                                                                                                       :> (Summary
                                                                                                                                                                                             "Get config for limitedEventFanout"
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 OperationDenied
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                                 TeamId
                                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                                   :> ("limitedEventFanout"
                                                                                                                                                                                                                       :> Get
                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                               LimitedEventFanoutConfig))))))))))
                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                            '("iput",
                                                                                                                                                                                              LimitedEventFanoutConfig)
                                                                                                                                                                                            (Description
                                                                                                                                                                                               ""
                                                                                                                                                                                             :> (Summary
                                                                                                                                                                                                   "Put config for limitedEventFanout"
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                   TeamFeatureError
                                                                                                                                                                                                                 :> (CanThrowMany
                                                                                                                                                                                                                       '[]
                                                                                                                                                                                                                     :> ("teams"
                                                                                                                                                                                                                         :> (Capture
                                                                                                                                                                                                                               "tid"
                                                                                                                                                                                                                               TeamId
                                                                                                                                                                                                                             :> ("features"
                                                                                                                                                                                                                                 :> ("limitedEventFanout"
                                                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                           (Feature
                                                                                                                                                                                                                                              LimitedEventFanoutConfig)
                                                                                                                                                                                                                                         :> Put
                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                                 LimitedEventFanoutConfig)))))))))))))
                                                                                                                                                                                          :<|> Named
                                                                                                                                                                                                 '("ipatch",
                                                                                                                                                                                                   LimitedEventFanoutConfig)
                                                                                                                                                                                                 (Description
                                                                                                                                                                                                    ""
                                                                                                                                                                                                  :> (Summary
                                                                                                                                                                                                        "Patch config for limitedEventFanout"
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                                                                            '[]
                                                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                                                      :> ("limitedEventFanout"
                                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                (LockableFeaturePatch
                                                                                                                                                                                                                                                   LimitedEventFanoutConfig)
                                                                                                                                                                                                                                              :> Patch
                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                                      LimitedEventFanoutConfig))))))))))))))))))))))))))))))))))
                                                                 :<|> (Named
                                                                         '("ilock",
                                                                           FileSharingConfig)
                                                                         (Summary
                                                                            "(Un-)lock fileSharing"
                                                                          :> (Description ""
                                                                              :> (CanThrow
                                                                                    'NotATeamMember
                                                                                  :> (CanThrow
                                                                                        'TeamNotFound
                                                                                      :> ("teams"
                                                                                          :> (Capture
                                                                                                "tid"
                                                                                                TeamId
                                                                                              :> ("features"
                                                                                                  :> ("fileSharing"
                                                                                                      :> (Capture
                                                                                                            "lockStatus"
                                                                                                            LockStatus
                                                                                                          :> Put
                                                                                                               '[JSON]
                                                                                                               LockStatusResponse)))))))))
                                                                       :<|> (Named
                                                                               '("ilock",
                                                                                 ConferenceCallingConfig)
                                                                               (Summary
                                                                                  "(Un-)lock conferenceCalling"
                                                                                :> (Description ""
                                                                                    :> (CanThrow
                                                                                          'NotATeamMember
                                                                                        :> (CanThrow
                                                                                              'TeamNotFound
                                                                                            :> ("teams"
                                                                                                :> (Capture
                                                                                                      "tid"
                                                                                                      TeamId
                                                                                                    :> ("features"
                                                                                                        :> ("conferenceCalling"
                                                                                                            :> (Capture
                                                                                                                  "lockStatus"
                                                                                                                  LockStatus
                                                                                                                :> Put
                                                                                                                     '[JSON]
                                                                                                                     LockStatusResponse)))))))))
                                                                             :<|> (Named
                                                                                     '("ilock",
                                                                                       SelfDeletingMessagesConfig)
                                                                                     (Summary
                                                                                        "(Un-)lock selfDeletingMessages"
                                                                                      :> (Description
                                                                                            ""
                                                                                          :> (CanThrow
                                                                                                'NotATeamMember
                                                                                              :> (CanThrow
                                                                                                    'TeamNotFound
                                                                                                  :> ("teams"
                                                                                                      :> (Capture
                                                                                                            "tid"
                                                                                                            TeamId
                                                                                                          :> ("features"
                                                                                                              :> ("selfDeletingMessages"
                                                                                                                  :> (Capture
                                                                                                                        "lockStatus"
                                                                                                                        LockStatus
                                                                                                                      :> Put
                                                                                                                           '[JSON]
                                                                                                                           LockStatusResponse)))))))))
                                                                                   :<|> (Named
                                                                                           '("ilock",
                                                                                             GuestLinksConfig)
                                                                                           (Summary
                                                                                              "(Un-)lock conversationGuestLinks"
                                                                                            :> (Description
                                                                                                  ""
                                                                                                :> (CanThrow
                                                                                                      'NotATeamMember
                                                                                                    :> (CanThrow
                                                                                                          'TeamNotFound
                                                                                                        :> ("teams"
                                                                                                            :> (Capture
                                                                                                                  "tid"
                                                                                                                  TeamId
                                                                                                                :> ("features"
                                                                                                                    :> ("conversationGuestLinks"
                                                                                                                        :> (Capture
                                                                                                                              "lockStatus"
                                                                                                                              LockStatus
                                                                                                                            :> Put
                                                                                                                                 '[JSON]
                                                                                                                                 LockStatusResponse)))))))))
                                                                                         :<|> (Named
                                                                                                 '("ilock",
                                                                                                   SndFactorPasswordChallengeConfig)
                                                                                                 (Summary
                                                                                                    "(Un-)lock sndFactorPasswordChallenge"
                                                                                                  :> (Description
                                                                                                        ""
                                                                                                      :> (CanThrow
                                                                                                            'NotATeamMember
                                                                                                          :> (CanThrow
                                                                                                                'TeamNotFound
                                                                                                              :> ("teams"
                                                                                                                  :> (Capture
                                                                                                                        "tid"
                                                                                                                        TeamId
                                                                                                                      :> ("features"
                                                                                                                          :> ("sndFactorPasswordChallenge"
                                                                                                                              :> (Capture
                                                                                                                                    "lockStatus"
                                                                                                                                    LockStatus
                                                                                                                                  :> Put
                                                                                                                                       '[JSON]
                                                                                                                                       LockStatusResponse)))))))))
                                                                                               :<|> (Named
                                                                                                       '("ilock",
                                                                                                         MLSConfig)
                                                                                                       (Summary
                                                                                                          "(Un-)lock mls"
                                                                                                        :> (Description
                                                                                                              ""
                                                                                                            :> (CanThrow
                                                                                                                  'NotATeamMember
                                                                                                                :> (CanThrow
                                                                                                                      'TeamNotFound
                                                                                                                    :> ("teams"
                                                                                                                        :> (Capture
                                                                                                                              "tid"
                                                                                                                              TeamId
                                                                                                                            :> ("features"
                                                                                                                                :> ("mls"
                                                                                                                                    :> (Capture
                                                                                                                                          "lockStatus"
                                                                                                                                          LockStatus
                                                                                                                                        :> Put
                                                                                                                                             '[JSON]
                                                                                                                                             LockStatusResponse)))))))))
                                                                                                     :<|> (Named
                                                                                                             '("ilock",
                                                                                                               OutlookCalIntegrationConfig)
                                                                                                             (Summary
                                                                                                                "(Un-)lock outlookCalIntegration"
                                                                                                              :> (Description
                                                                                                                    ""
                                                                                                                  :> (CanThrow
                                                                                                                        'NotATeamMember
                                                                                                                      :> (CanThrow
                                                                                                                            'TeamNotFound
                                                                                                                          :> ("teams"
                                                                                                                              :> (Capture
                                                                                                                                    "tid"
                                                                                                                                    TeamId
                                                                                                                                  :> ("features"
                                                                                                                                      :> ("outlookCalIntegration"
                                                                                                                                          :> (Capture
                                                                                                                                                "lockStatus"
                                                                                                                                                LockStatus
                                                                                                                                              :> Put
                                                                                                                                                   '[JSON]
                                                                                                                                                   LockStatusResponse)))))))))
                                                                                                           :<|> (Named
                                                                                                                   '("ilock",
                                                                                                                     MlsE2EIdConfig)
                                                                                                                   (Summary
                                                                                                                      "(Un-)lock mlsE2EId"
                                                                                                                    :> (Description
                                                                                                                          ""
                                                                                                                        :> (CanThrow
                                                                                                                              'NotATeamMember
                                                                                                                            :> (CanThrow
                                                                                                                                  'TeamNotFound
                                                                                                                                :> ("teams"
                                                                                                                                    :> (Capture
                                                                                                                                          "tid"
                                                                                                                                          TeamId
                                                                                                                                        :> ("features"
                                                                                                                                            :> ("mlsE2EId"
                                                                                                                                                :> (Capture
                                                                                                                                                      "lockStatus"
                                                                                                                                                      LockStatus
                                                                                                                                                    :> Put
                                                                                                                                                         '[JSON]
                                                                                                                                                         LockStatusResponse)))))))))
                                                                                                                 :<|> (Named
                                                                                                                         '("ilock",
                                                                                                                           MlsMigrationConfig)
                                                                                                                         (Summary
                                                                                                                            "(Un-)lock mlsMigration"
                                                                                                                          :> (Description
                                                                                                                                ""
                                                                                                                              :> (CanThrow
                                                                                                                                    'NotATeamMember
                                                                                                                                  :> (CanThrow
                                                                                                                                        'TeamNotFound
                                                                                                                                      :> ("teams"
                                                                                                                                          :> (Capture
                                                                                                                                                "tid"
                                                                                                                                                TeamId
                                                                                                                                              :> ("features"
                                                                                                                                                  :> ("mlsMigration"
                                                                                                                                                      :> (Capture
                                                                                                                                                            "lockStatus"
                                                                                                                                                            LockStatus
                                                                                                                                                          :> Put
                                                                                                                                                               '[JSON]
                                                                                                                                                               LockStatusResponse)))))))))
                                                                                                                       :<|> (Named
                                                                                                                               '("ilock",
                                                                                                                                 EnforceFileDownloadLocationConfig)
                                                                                                                               (Summary
                                                                                                                                  "(Un-)lock enforceFileDownloadLocation"
                                                                                                                                :> (Description
                                                                                                                                      "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                    :> (CanThrow
                                                                                                                                          'NotATeamMember
                                                                                                                                        :> (CanThrow
                                                                                                                                              'TeamNotFound
                                                                                                                                            :> ("teams"
                                                                                                                                                :> (Capture
                                                                                                                                                      "tid"
                                                                                                                                                      TeamId
                                                                                                                                                    :> ("features"
                                                                                                                                                        :> ("enforceFileDownloadLocation"
                                                                                                                                                            :> (Capture
                                                                                                                                                                  "lockStatus"
                                                                                                                                                                  LockStatus
                                                                                                                                                                :> Put
                                                                                                                                                                     '[JSON]
                                                                                                                                                                     LockStatusResponse)))))))))
                                                                                                                             :<|> (Named
                                                                                                                                     '("igetmulti",
                                                                                                                                       SearchVisibilityInboundConfig)
                                                                                                                                     (Summary
                                                                                                                                        "Get team feature status in bulk for feature searchVisibilityInbound"
                                                                                                                                      :> ("features-multi-teams"
                                                                                                                                          :> ("searchVisibilityInbound"
                                                                                                                                              :> (ReqBody
                                                                                                                                                    '[JSON]
                                                                                                                                                    TeamFeatureNoConfigMultiRequest
                                                                                                                                                  :> Post
                                                                                                                                                       '[JSON]
                                                                                                                                                       (TeamFeatureNoConfigMultiResponse
                                                                                                                                                          SearchVisibilityInboundConfig)))))
                                                                                                                                   :<|> Named
                                                                                                                                          "feature-configs-internal"
                                                                                                                                          (Summary
                                                                                                                                             "Get all feature configs (for user/team; if n/a fall back to site config)."
                                                                                                                                           :> ("feature-configs"
                                                                                                                                               :> (CanThrow
                                                                                                                                                     OperationDenied
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'NotATeamMember
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'TeamNotFound
                                                                                                                                                           :> (QueryParam'
                                                                                                                                                                 '[Optional,
                                                                                                                                                                   Strict,
                                                                                                                                                                   Description
                                                                                                                                                                     "Optional user id"]
                                                                                                                                                                 "user_id"
                                                                                                                                                                 UserId
                                                                                                                                                               :> Get
                                                                                                                                                                    '[JSON]
                                                                                                                                                                    AllTeamFeatures))))))))))))))))))
                                                                :<|> (IFederationAPI
                                                                      :<|> (IConversationAPI
                                                                            :<|> IEJPDAPI)))))))))))))
     '[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,
       Error InvalidInput, Error InternalError, Error FederationError,
       Async, Delay, Fail, Embed IO, Error JSONResponse, Resource,
       Final IO]
-> ServerT
     ("i"
      :> (Named
            "status"
            ("status" :> MultiVerb 'GET '[JSON] '[RespondEmpty 200 "OK"] ())
          :<|> (Named
                  "delete-user"
                  (Summary
                     "Remove a user from their teams and conversations and erase their clients"
                   :> (MakesFederatedCall 'Galley "on-conversation-updated"
                       :> (MakesFederatedCall 'Galley "on-mls-message-sent"
                           :> (ZLocalUser
                               :> (ZOptConn
                                   :> ("user"
                                       :> MultiVerb
                                            'DELETE
                                            '[JSON]
                                            '[RespondEmpty 200 "Remove a user from Galley"]
                                            ()))))))
                :<|> (Named
                        "connect"
                        (Summary "Create a connect conversation (deprecated)"
                         :> (MakesFederatedCall 'Brig "api-version"
                             :> (MakesFederatedCall 'Galley "on-conversation-created"
                                 :> (MakesFederatedCall 'Galley "on-conversation-updated"
                                     :> (CanThrow 'ConvNotFound
                                         :> (CanThrow 'InvalidOperation
                                             :> (CanThrow 'NotConnected
                                                 :> (CanThrow UnreachableBackends
                                                     :> (ZLocalUser
                                                         :> (ZOptConn
                                                             :> ("conversations"
                                                                 :> ("connect"
                                                                     :> (ReqBody '[JSON] Connect
                                                                         :> MultiVerb
                                                                              'POST
                                                                              '[JSON]
                                                                              '[WithHeaders
                                                                                  ConversationHeaders
                                                                                  Conversation
                                                                                  (VersionedRespond
                                                                                     'V6
                                                                                     200
                                                                                     "Conversation existed"
                                                                                     Conversation),
                                                                                WithHeaders
                                                                                  ConversationHeaders
                                                                                  Conversation
                                                                                  (VersionedRespond
                                                                                     'V6
                                                                                     201
                                                                                     "Conversation created"
                                                                                     Conversation)]
                                                                              (ResponseForExistedCreated
                                                                                 Conversation))))))))))))))
                      :<|> (Named
                              "get-conversation-clients"
                              (Summary "Get mls conversation client list"
                               :> (CanThrow 'ConvNotFound
                                   :> ("group"
                                       :> (Capture "gid" GroupId
                                           :> MultiVerb
                                                'GET
                                                '[JSON]
                                                '[Respond 200 "Clients" ClientList]
                                                ClientList))))
                            :<|> (Named
                                    "guard-legalhold-policy-conflicts"
                                    ("guard-legalhold-policy-conflicts"
                                     :> (CanThrow 'MissingLegalholdConsent
                                         :> (CanThrow 'MissingLegalholdConsentOldClients
                                             :> (ReqBody '[JSON] GuardLegalholdPolicyConflicts
                                                 :> MultiVerb
                                                      'PUT
                                                      '[JSON]
                                                      '[RespondEmpty 200 "Guard Legalhold Policy"]
                                                      ()))))
                                  :<|> (("legalhold"
                                         :> ("whitelisted-teams"
                                             :> (Capture "tid" TeamId
                                                 :> (Named
                                                       "set-team-legalhold-whitelisted"
                                                       (MultiVerb
                                                          'PUT
                                                          '[JSON]
                                                          '[RespondEmpty
                                                              200 "Team Legalhold Whitelisted"]
                                                          ())
                                                     :<|> (Named
                                                             "unset-team-legalhold-whitelisted"
                                                             (MultiVerb
                                                                'DELETE
                                                                '[JSON]
                                                                '[RespondEmpty
                                                                    204
                                                                    "Team Legalhold un-Whitelisted"]
                                                                ())
                                                           :<|> Named
                                                                  "get-team-legalhold-whitelisted"
                                                                  (MultiVerb
                                                                     'GET
                                                                     '[JSON]
                                                                     '[RespondEmpty
                                                                         404
                                                                         "Team not Legalhold Whitelisted",
                                                                       RespondEmpty
                                                                         200
                                                                         "Team Legalhold Whitelisted"]
                                                                     Bool))))))
                                        :<|> (("teams"
                                               :> (Capture "tid" TeamId
                                                   :> (Named
                                                         "get-team-internal"
                                                         (CanThrow 'TeamNotFound
                                                          :> Get '[JSON] TeamData)
                                                       :<|> (Named
                                                               "create-binding-team"
                                                               (ZUser
                                                                :> (ReqBody '[JSON] BindingNewTeam
                                                                    :> MultiVerb
                                                                         'PUT
                                                                         '[JSON]
                                                                         '[WithHeaders
                                                                             '[Header
                                                                                 "Location" TeamId]
                                                                             TeamId
                                                                             (RespondEmpty
                                                                                201 "OK")]
                                                                         TeamId))
                                                             :<|> (Named
                                                                     "delete-binding-team"
                                                                     (CanThrow 'NoBindingTeam
                                                                      :> (CanThrow
                                                                            'NotAOneMemberTeam
                                                                          :> (CanThrow
                                                                                'DeleteQueueFull
                                                                              :> (CanThrow
                                                                                    'TeamNotFound
                                                                                  :> (QueryFlag
                                                                                        "force"
                                                                                      :> MultiVerb
                                                                                           'DELETE
                                                                                           '[JSON]
                                                                                           '[RespondEmpty
                                                                                               202
                                                                                               "OK"]
                                                                                           ())))))
                                                                   :<|> (Named
                                                                           "get-team-name"
                                                                           ("name"
                                                                            :> (CanThrow
                                                                                  'TeamNotFound
                                                                                :> Get
                                                                                     '[JSON]
                                                                                     TeamName))
                                                                         :<|> (Named
                                                                                 "update-team-status"
                                                                                 ("status"
                                                                                  :> (CanThrow
                                                                                        'TeamNotFound
                                                                                      :> (CanThrow
                                                                                            'InvalidTeamStatusUpdate
                                                                                          :> (ReqBody
                                                                                                '[JSON]
                                                                                                TeamStatusUpdate
                                                                                              :> MultiVerb
                                                                                                   'PUT
                                                                                                   '[JSON]
                                                                                                   '[RespondEmpty
                                                                                                       200
                                                                                                       "OK"]
                                                                                                   ()))))
                                                                               :<|> (("members"
                                                                                      :> (Named
                                                                                            "unchecked-add-team-member"
                                                                                            (CanThrow
                                                                                               'TooManyTeamMembers
                                                                                             :> (CanThrow
                                                                                                   'TooManyTeamMembersOnTeamWithLegalhold
                                                                                                 :> (CanThrow
                                                                                                       'TooManyTeamAdmins
                                                                                                     :> (ReqBody
                                                                                                           '[JSON]
                                                                                                           NewTeamMember
                                                                                                         :> MultiVerb
                                                                                                              'POST
                                                                                                              '[JSON]
                                                                                                              '[RespondEmpty
                                                                                                                  200
                                                                                                                  "OK"]
                                                                                                              ()))))
                                                                                          :<|> (Named
                                                                                                  "unchecked-get-team-members"
                                                                                                  (QueryParam'
                                                                                                     '[Strict]
                                                                                                     "maxResults"
                                                                                                     (Range
                                                                                                        1
                                                                                                        HardTruncationLimit
                                                                                                        Int32)
                                                                                                   :> Get
                                                                                                        '[JSON]
                                                                                                        TeamMemberList)
                                                                                                :<|> (Named
                                                                                                        "unchecked-get-team-member"
                                                                                                        (Capture
                                                                                                           "uid"
                                                                                                           UserId
                                                                                                         :> (CanThrow
                                                                                                               'TeamMemberNotFound
                                                                                                             :> Get
                                                                                                                  '[JSON]
                                                                                                                  TeamMember))
                                                                                                      :<|> (Named
                                                                                                              "can-user-join-team"
                                                                                                              ("check"
                                                                                                               :> (CanThrow
                                                                                                                     'TooManyTeamMembersOnTeamWithLegalhold
                                                                                                                   :> MultiVerb
                                                                                                                        'GET
                                                                                                                        '[JSON]
                                                                                                                        '[RespondEmpty
                                                                                                                            200
                                                                                                                            "User can join"]
                                                                                                                        ()))
                                                                                                            :<|> Named
                                                                                                                   "unchecked-update-team-member"
                                                                                                                   (CanThrow
                                                                                                                      'AccessDenied
                                                                                                                    :> (CanThrow
                                                                                                                          'InvalidPermissions
                                                                                                                        :> (CanThrow
                                                                                                                              'TeamNotFound
                                                                                                                            :> (CanThrow
                                                                                                                                  'TeamMemberNotFound
                                                                                                                                :> (CanThrow
                                                                                                                                      'TooManyTeamAdmins
                                                                                                                                    :> (CanThrow
                                                                                                                                          'NotATeamMember
                                                                                                                                        :> (CanThrow
                                                                                                                                              OperationDenied
                                                                                                                                            :> (ReqBody
                                                                                                                                                  '[JSON]
                                                                                                                                                  NewTeamMember
                                                                                                                                                :> MultiVerb
                                                                                                                                                     'PUT
                                                                                                                                                     '[JSON]
                                                                                                                                                     '[RespondEmpty
                                                                                                                                                         200
                                                                                                                                                         ""]
                                                                                                                                                     ())))))))))))))
                                                                                     :<|> (Named
                                                                                             "user-is-team-owner"
                                                                                             ("is-team-owner"
                                                                                              :> (Capture
                                                                                                    "uid"
                                                                                                    UserId
                                                                                                  :> (CanThrow
                                                                                                        'AccessDenied
                                                                                                      :> (CanThrow
                                                                                                            'TeamMemberNotFound
                                                                                                          :> (CanThrow
                                                                                                                'NotATeamMember
                                                                                                              :> MultiVerb
                                                                                                                   'GET
                                                                                                                   '[JSON]
                                                                                                                   '[RespondEmpty
                                                                                                                       200
                                                                                                                       "User is team owner"]
                                                                                                                   ())))))
                                                                                           :<|> ("search-visibility"
                                                                                                 :> (Named
                                                                                                       "get-search-visibility-internal"
                                                                                                       (Get
                                                                                                          '[JSON]
                                                                                                          TeamSearchVisibilityView)
                                                                                                     :<|> Named
                                                                                                            "set-search-visibility-internal"
                                                                                                            (CanThrow
                                                                                                               'TeamSearchVisibilityNotEnabled
                                                                                                             :> (CanThrow
                                                                                                                   OperationDenied
                                                                                                                 :> (CanThrow
                                                                                                                       'NotATeamMember
                                                                                                                     :> (CanThrow
                                                                                                                           'TeamNotFound
                                                                                                                         :> (ReqBody
                                                                                                                               '[JSON]
                                                                                                                               TeamSearchVisibilityView
                                                                                                                             :> MultiVerb
                                                                                                                                  'PUT
                                                                                                                                  '[JSON]
                                                                                                                                  '[RespondEmpty
                                                                                                                                      204
                                                                                                                                      "OK"]
                                                                                                                                  ()))))))))))))))))
                                              :<|> ((Named
                                                       "get-team-members"
                                                       (CanThrow 'NonBindingTeam
                                                        :> (CanThrow 'TeamNotFound
                                                            :> ("users"
                                                                :> (Capture "uid" UserId
                                                                    :> ("team"
                                                                        :> ("members"
                                                                            :> Get
                                                                                 '[JSON]
                                                                                 TeamMemberList))))))
                                                     :<|> (Named
                                                             "get-team-id"
                                                             (CanThrow 'NonBindingTeam
                                                              :> (CanThrow 'TeamNotFound
                                                                  :> ("users"
                                                                      :> (Capture "uid" UserId
                                                                          :> ("team"
                                                                              :> Get
                                                                                   '[JSON]
                                                                                   TeamId)))))
                                                           :<|> (Named
                                                                   "test-get-clients"
                                                                   ("test"
                                                                    :> ("clients"
                                                                        :> (ZUser
                                                                            :> Get
                                                                                 '[JSON]
                                                                                 [ClientId])))
                                                                 :<|> (Named
                                                                         "test-add-client"
                                                                         ("clients"
                                                                          :> (ZUser
                                                                              :> (Capture
                                                                                    "cid" ClientId
                                                                                  :> MultiVerb
                                                                                       'POST
                                                                                       '[JSON]
                                                                                       '[RespondEmpty
                                                                                           200 "OK"]
                                                                                       ())))
                                                                       :<|> (Named
                                                                               "test-delete-client"
                                                                               ("clients"
                                                                                :> (ZUser
                                                                                    :> (Capture
                                                                                          "cid"
                                                                                          ClientId
                                                                                        :> MultiVerb
                                                                                             'DELETE
                                                                                             '[JSON]
                                                                                             '[RespondEmpty
                                                                                                 200
                                                                                                 "OK"]
                                                                                             ())))
                                                                             :<|> (Named
                                                                                     "add-service"
                                                                                     ("services"
                                                                                      :> (ReqBody
                                                                                            '[JSON]
                                                                                            Service
                                                                                          :> MultiVerb
                                                                                               'POST
                                                                                               '[JSON]
                                                                                               '[RespondEmpty
                                                                                                   200
                                                                                                   "OK"]
                                                                                               ()))
                                                                                   :<|> (Named
                                                                                           "delete-service"
                                                                                           ("services"
                                                                                            :> (ReqBody
                                                                                                  '[JSON]
                                                                                                  ServiceRef
                                                                                                :> MultiVerb
                                                                                                     'DELETE
                                                                                                     '[JSON]
                                                                                                     '[RespondEmpty
                                                                                                         200
                                                                                                         "OK"]
                                                                                                     ()))
                                                                                         :<|> (Named
                                                                                                 "i-add-bot"
                                                                                                 (CanThrow
                                                                                                    ('ActionDenied
                                                                                                       'AddConversationMember)
                                                                                                  :> (CanThrow
                                                                                                        'ConvNotFound
                                                                                                      :> (CanThrow
                                                                                                            'InvalidOperation
                                                                                                          :> (CanThrow
                                                                                                                'TooManyMembers
                                                                                                              :> ("bots"
                                                                                                                  :> (ZLocalUser
                                                                                                                      :> (ZConn
                                                                                                                          :> (ReqBody
                                                                                                                                '[JSON]
                                                                                                                                AddBot
                                                                                                                              :> Post
                                                                                                                                   '[JSON]
                                                                                                                                   Event))))))))
                                                                                               :<|> (Named
                                                                                                       "delete-bot"
                                                                                                       (CanThrow
                                                                                                          'ConvNotFound
                                                                                                        :> (CanThrow
                                                                                                              ('ActionDenied
                                                                                                                 'RemoveConversationMember)
                                                                                                            :> ("bots"
                                                                                                                :> (ZLocalUser
                                                                                                                    :> (ZOptConn
                                                                                                                        :> (ReqBody
                                                                                                                              '[JSON]
                                                                                                                              RemoveBot
                                                                                                                            :> MultiVerb
                                                                                                                                 'DELETE
                                                                                                                                 '[JSON]
                                                                                                                                 (UpdateResponses
                                                                                                                                    "Bot not found"
                                                                                                                                    "Bot deleted"
                                                                                                                                    Event)
                                                                                                                                 (UpdateResult
                                                                                                                                    Event)))))))
                                                                                                     :<|> (Named
                                                                                                             "put-custom-backend"
                                                                                                             ("custom-backend"
                                                                                                              :> ("by-domain"
                                                                                                                  :> (Capture
                                                                                                                        "domain"
                                                                                                                        Domain
                                                                                                                      :> (ReqBody
                                                                                                                            '[JSON]
                                                                                                                            CustomBackend
                                                                                                                          :> MultiVerb
                                                                                                                               'PUT
                                                                                                                               '[JSON]
                                                                                                                               '[RespondEmpty
                                                                                                                                   201
                                                                                                                                   "OK"]
                                                                                                                               ()))))
                                                                                                           :<|> Named
                                                                                                                  "delete-custom-backend"
                                                                                                                  ("custom-backend"
                                                                                                                   :> ("by-domain"
                                                                                                                       :> (Capture
                                                                                                                             "domain"
                                                                                                                             Domain
                                                                                                                           :> MultiVerb
                                                                                                                                'DELETE
                                                                                                                                '[JSON]
                                                                                                                                '[RespondEmpty
                                                                                                                                    200
                                                                                                                                    "OK"]
                                                                                                                                ())))))))))))))
                                                    :<|> (Named
                                                            "upsert-one2one"
                                                            (Summary
                                                               "Create or Update a connect or one2one conversation."
                                                             :> ("conversations"
                                                                 :> ("one2one"
                                                                     :> ("upsert"
                                                                         :> (ReqBody
                                                                               '[JSON]
                                                                               UpsertOne2OneConversationRequest
                                                                             :> MultiVerb
                                                                                  'POST
                                                                                  '[JSON]
                                                                                  '[RespondEmpty
                                                                                      200
                                                                                      "Upsert One2One Policy"]
                                                                                  ())))))
                                                          :<|> ((((Named
                                                                     '("iget", LegalholdConfig)
                                                                     (Description ""
                                                                      :> (Summary
                                                                            "Get config for legalhold"
                                                                          :> (CanThrow
                                                                                OperationDenied
                                                                              :> (CanThrow
                                                                                    'NotATeamMember
                                                                                  :> (CanThrow
                                                                                        'TeamNotFound
                                                                                      :> ("teams"
                                                                                          :> (Capture
                                                                                                "tid"
                                                                                                TeamId
                                                                                              :> ("features"
                                                                                                  :> ("legalhold"
                                                                                                      :> Get
                                                                                                           '[JSON]
                                                                                                           (LockableFeature
                                                                                                              LegalholdConfig))))))))))
                                                                   :<|> (Named
                                                                           '("iput",
                                                                             LegalholdConfig)
                                                                           (Description ""
                                                                            :> (Summary
                                                                                  "Put config for legalhold"
                                                                                :> (CanThrow
                                                                                      OperationDenied
                                                                                    :> (CanThrow
                                                                                          'NotATeamMember
                                                                                        :> (CanThrow
                                                                                              'TeamNotFound
                                                                                            :> (CanThrow
                                                                                                  TeamFeatureError
                                                                                                :> (CanThrowMany
                                                                                                      '[ 'ActionDenied
                                                                                                           'RemoveConversationMember,
                                                                                                         'CannotEnableLegalHoldServiceLargeTeam,
                                                                                                         'LegalHoldNotEnabled,
                                                                                                         'LegalHoldDisableUnimplemented,
                                                                                                         'LegalHoldServiceNotRegistered,
                                                                                                         'UserLegalHoldIllegalOperation,
                                                                                                         'LegalHoldCouldNotBlockConnections]
                                                                                                    :> ("teams"
                                                                                                        :> (Capture
                                                                                                              "tid"
                                                                                                              TeamId
                                                                                                            :> ("features"
                                                                                                                :> ("legalhold"
                                                                                                                    :> (ReqBody
                                                                                                                          '[JSON]
                                                                                                                          (Feature
                                                                                                                             LegalholdConfig)
                                                                                                                        :> Put
                                                                                                                             '[JSON]
                                                                                                                             (LockableFeature
                                                                                                                                LegalholdConfig)))))))))))))
                                                                         :<|> Named
                                                                                '("ipatch",
                                                                                  LegalholdConfig)
                                                                                (Description ""
                                                                                 :> (Summary
                                                                                       "Patch config for legalhold"
                                                                                     :> (CanThrow
                                                                                           OperationDenied
                                                                                         :> (CanThrow
                                                                                               'NotATeamMember
                                                                                             :> (CanThrow
                                                                                                   'TeamNotFound
                                                                                                 :> (CanThrow
                                                                                                       TeamFeatureError
                                                                                                     :> (CanThrowMany
                                                                                                           '[ 'ActionDenied
                                                                                                                'RemoveConversationMember,
                                                                                                              'CannotEnableLegalHoldServiceLargeTeam,
                                                                                                              'LegalHoldNotEnabled,
                                                                                                              'LegalHoldDisableUnimplemented,
                                                                                                              'LegalHoldServiceNotRegistered,
                                                                                                              'UserLegalHoldIllegalOperation,
                                                                                                              'LegalHoldCouldNotBlockConnections]
                                                                                                         :> ("teams"
                                                                                                             :> (Capture
                                                                                                                   "tid"
                                                                                                                   TeamId
                                                                                                                 :> ("features"
                                                                                                                     :> ("legalhold"
                                                                                                                         :> (ReqBody
                                                                                                                               '[JSON]
                                                                                                                               (LockableFeaturePatch
                                                                                                                                  LegalholdConfig)
                                                                                                                             :> Patch
                                                                                                                                  '[JSON]
                                                                                                                                  (LockableFeature
                                                                                                                                     LegalholdConfig)))))))))))))))
                                                                  :<|> ((Named
                                                                           '("iget", SSOConfig)
                                                                           (Description ""
                                                                            :> (Summary
                                                                                  "Get config for sso"
                                                                                :> (CanThrow
                                                                                      OperationDenied
                                                                                    :> (CanThrow
                                                                                          'NotATeamMember
                                                                                        :> (CanThrow
                                                                                              'TeamNotFound
                                                                                            :> ("teams"
                                                                                                :> (Capture
                                                                                                      "tid"
                                                                                                      TeamId
                                                                                                    :> ("features"
                                                                                                        :> ("sso"
                                                                                                            :> Get
                                                                                                                 '[JSON]
                                                                                                                 (LockableFeature
                                                                                                                    SSOConfig))))))))))
                                                                         :<|> (Named
                                                                                 '("iput",
                                                                                   SSOConfig)
                                                                                 (Description ""
                                                                                  :> (Summary
                                                                                        "Put config for sso"
                                                                                      :> (CanThrow
                                                                                            OperationDenied
                                                                                          :> (CanThrow
                                                                                                'NotATeamMember
                                                                                              :> (CanThrow
                                                                                                    'TeamNotFound
                                                                                                  :> (CanThrow
                                                                                                        TeamFeatureError
                                                                                                      :> (CanThrowMany
                                                                                                            '[]
                                                                                                          :> ("teams"
                                                                                                              :> (Capture
                                                                                                                    "tid"
                                                                                                                    TeamId
                                                                                                                  :> ("features"
                                                                                                                      :> ("sso"
                                                                                                                          :> (ReqBody
                                                                                                                                '[JSON]
                                                                                                                                (Feature
                                                                                                                                   SSOConfig)
                                                                                                                              :> Put
                                                                                                                                   '[JSON]
                                                                                                                                   (LockableFeature
                                                                                                                                      SSOConfig)))))))))))))
                                                                               :<|> Named
                                                                                      '("ipatch",
                                                                                        SSOConfig)
                                                                                      (Description
                                                                                         ""
                                                                                       :> (Summary
                                                                                             "Patch config for sso"
                                                                                           :> (CanThrow
                                                                                                 OperationDenied
                                                                                               :> (CanThrow
                                                                                                     'NotATeamMember
                                                                                                   :> (CanThrow
                                                                                                         'TeamNotFound
                                                                                                       :> (CanThrow
                                                                                                             TeamFeatureError
                                                                                                           :> (CanThrowMany
                                                                                                                 '[]
                                                                                                               :> ("teams"
                                                                                                                   :> (Capture
                                                                                                                         "tid"
                                                                                                                         TeamId
                                                                                                                       :> ("features"
                                                                                                                           :> ("sso"
                                                                                                                               :> (ReqBody
                                                                                                                                     '[JSON]
                                                                                                                                     (LockableFeaturePatch
                                                                                                                                        SSOConfig)
                                                                                                                                   :> Patch
                                                                                                                                        '[JSON]
                                                                                                                                        (LockableFeature
                                                                                                                                           SSOConfig)))))))))))))))
                                                                        :<|> ((Named
                                                                                 '("iget",
                                                                                   SearchVisibilityAvailableConfig)
                                                                                 (Description ""
                                                                                  :> (Summary
                                                                                        "Get config for searchVisibility"
                                                                                      :> (CanThrow
                                                                                            OperationDenied
                                                                                          :> (CanThrow
                                                                                                'NotATeamMember
                                                                                              :> (CanThrow
                                                                                                    'TeamNotFound
                                                                                                  :> ("teams"
                                                                                                      :> (Capture
                                                                                                            "tid"
                                                                                                            TeamId
                                                                                                          :> ("features"
                                                                                                              :> ("searchVisibility"
                                                                                                                  :> Get
                                                                                                                       '[JSON]
                                                                                                                       (LockableFeature
                                                                                                                          SearchVisibilityAvailableConfig))))))))))
                                                                               :<|> (Named
                                                                                       '("iput",
                                                                                         SearchVisibilityAvailableConfig)
                                                                                       (Description
                                                                                          ""
                                                                                        :> (Summary
                                                                                              "Put config for searchVisibility"
                                                                                            :> (CanThrow
                                                                                                  OperationDenied
                                                                                                :> (CanThrow
                                                                                                      'NotATeamMember
                                                                                                    :> (CanThrow
                                                                                                          'TeamNotFound
                                                                                                        :> (CanThrow
                                                                                                              TeamFeatureError
                                                                                                            :> (CanThrowMany
                                                                                                                  '[]
                                                                                                                :> ("teams"
                                                                                                                    :> (Capture
                                                                                                                          "tid"
                                                                                                                          TeamId
                                                                                                                        :> ("features"
                                                                                                                            :> ("searchVisibility"
                                                                                                                                :> (ReqBody
                                                                                                                                      '[JSON]
                                                                                                                                      (Feature
                                                                                                                                         SearchVisibilityAvailableConfig)
                                                                                                                                    :> Put
                                                                                                                                         '[JSON]
                                                                                                                                         (LockableFeature
                                                                                                                                            SearchVisibilityAvailableConfig)))))))))))))
                                                                                     :<|> Named
                                                                                            '("ipatch",
                                                                                              SearchVisibilityAvailableConfig)
                                                                                            (Description
                                                                                               ""
                                                                                             :> (Summary
                                                                                                   "Patch config for searchVisibility"
                                                                                                 :> (CanThrow
                                                                                                       OperationDenied
                                                                                                     :> (CanThrow
                                                                                                           'NotATeamMember
                                                                                                         :> (CanThrow
                                                                                                               'TeamNotFound
                                                                                                             :> (CanThrow
                                                                                                                   TeamFeatureError
                                                                                                                 :> (CanThrowMany
                                                                                                                       '[]
                                                                                                                     :> ("teams"
                                                                                                                         :> (Capture
                                                                                                                               "tid"
                                                                                                                               TeamId
                                                                                                                             :> ("features"
                                                                                                                                 :> ("searchVisibility"
                                                                                                                                     :> (ReqBody
                                                                                                                                           '[JSON]
                                                                                                                                           (LockableFeaturePatch
                                                                                                                                              SearchVisibilityAvailableConfig)
                                                                                                                                         :> Patch
                                                                                                                                              '[JSON]
                                                                                                                                              (LockableFeature
                                                                                                                                                 SearchVisibilityAvailableConfig)))))))))))))))
                                                                              :<|> ((Named
                                                                                       '("iget",
                                                                                         SearchVisibilityInboundConfig)
                                                                                       (Description
                                                                                          ""
                                                                                        :> (Summary
                                                                                              "Get config for searchVisibilityInbound"
                                                                                            :> (CanThrow
                                                                                                  OperationDenied
                                                                                                :> (CanThrow
                                                                                                      'NotATeamMember
                                                                                                    :> (CanThrow
                                                                                                          'TeamNotFound
                                                                                                        :> ("teams"
                                                                                                            :> (Capture
                                                                                                                  "tid"
                                                                                                                  TeamId
                                                                                                                :> ("features"
                                                                                                                    :> ("searchVisibilityInbound"
                                                                                                                        :> Get
                                                                                                                             '[JSON]
                                                                                                                             (LockableFeature
                                                                                                                                SearchVisibilityInboundConfig))))))))))
                                                                                     :<|> (Named
                                                                                             '("iput",
                                                                                               SearchVisibilityInboundConfig)
                                                                                             (Description
                                                                                                ""
                                                                                              :> (Summary
                                                                                                    "Put config for searchVisibilityInbound"
                                                                                                  :> (CanThrow
                                                                                                        OperationDenied
                                                                                                      :> (CanThrow
                                                                                                            'NotATeamMember
                                                                                                          :> (CanThrow
                                                                                                                'TeamNotFound
                                                                                                              :> (CanThrow
                                                                                                                    TeamFeatureError
                                                                                                                  :> (CanThrowMany
                                                                                                                        '[]
                                                                                                                      :> ("teams"
                                                                                                                          :> (Capture
                                                                                                                                "tid"
                                                                                                                                TeamId
                                                                                                                              :> ("features"
                                                                                                                                  :> ("searchVisibilityInbound"
                                                                                                                                      :> (ReqBody
                                                                                                                                            '[JSON]
                                                                                                                                            (Feature
                                                                                                                                               SearchVisibilityInboundConfig)
                                                                                                                                          :> Put
                                                                                                                                               '[JSON]
                                                                                                                                               (LockableFeature
                                                                                                                                                  SearchVisibilityInboundConfig)))))))))))))
                                                                                           :<|> Named
                                                                                                  '("ipatch",
                                                                                                    SearchVisibilityInboundConfig)
                                                                                                  (Description
                                                                                                     ""
                                                                                                   :> (Summary
                                                                                                         "Patch config for searchVisibilityInbound"
                                                                                                       :> (CanThrow
                                                                                                             OperationDenied
                                                                                                           :> (CanThrow
                                                                                                                 'NotATeamMember
                                                                                                               :> (CanThrow
                                                                                                                     'TeamNotFound
                                                                                                                   :> (CanThrow
                                                                                                                         TeamFeatureError
                                                                                                                       :> (CanThrowMany
                                                                                                                             '[]
                                                                                                                           :> ("teams"
                                                                                                                               :> (Capture
                                                                                                                                     "tid"
                                                                                                                                     TeamId
                                                                                                                                   :> ("features"
                                                                                                                                       :> ("searchVisibilityInbound"
                                                                                                                                           :> (ReqBody
                                                                                                                                                 '[JSON]
                                                                                                                                                 (LockableFeaturePatch
                                                                                                                                                    SearchVisibilityInboundConfig)
                                                                                                                                               :> Patch
                                                                                                                                                    '[JSON]
                                                                                                                                                    (LockableFeature
                                                                                                                                                       SearchVisibilityInboundConfig)))))))))))))))
                                                                                    :<|> ((Named
                                                                                             '("iget",
                                                                                               ValidateSAMLEmailsConfig)
                                                                                             (Description
                                                                                                ""
                                                                                              :> (Summary
                                                                                                    "Get config for validateSAMLemails"
                                                                                                  :> (CanThrow
                                                                                                        OperationDenied
                                                                                                      :> (CanThrow
                                                                                                            'NotATeamMember
                                                                                                          :> (CanThrow
                                                                                                                'TeamNotFound
                                                                                                              :> ("teams"
                                                                                                                  :> (Capture
                                                                                                                        "tid"
                                                                                                                        TeamId
                                                                                                                      :> ("features"
                                                                                                                          :> ("validateSAMLemails"
                                                                                                                              :> Get
                                                                                                                                   '[JSON]
                                                                                                                                   (LockableFeature
                                                                                                                                      ValidateSAMLEmailsConfig))))))))))
                                                                                           :<|> (Named
                                                                                                   '("iput",
                                                                                                     ValidateSAMLEmailsConfig)
                                                                                                   (Description
                                                                                                      ""
                                                                                                    :> (Summary
                                                                                                          "Put config for validateSAMLemails"
                                                                                                        :> (CanThrow
                                                                                                              OperationDenied
                                                                                                            :> (CanThrow
                                                                                                                  'NotATeamMember
                                                                                                                :> (CanThrow
                                                                                                                      'TeamNotFound
                                                                                                                    :> (CanThrow
                                                                                                                          TeamFeatureError
                                                                                                                        :> (CanThrowMany
                                                                                                                              '[]
                                                                                                                            :> ("teams"
                                                                                                                                :> (Capture
                                                                                                                                      "tid"
                                                                                                                                      TeamId
                                                                                                                                    :> ("features"
                                                                                                                                        :> ("validateSAMLemails"
                                                                                                                                            :> (ReqBody
                                                                                                                                                  '[JSON]
                                                                                                                                                  (Feature
                                                                                                                                                     ValidateSAMLEmailsConfig)
                                                                                                                                                :> Put
                                                                                                                                                     '[JSON]
                                                                                                                                                     (LockableFeature
                                                                                                                                                        ValidateSAMLEmailsConfig)))))))))))))
                                                                                                 :<|> Named
                                                                                                        '("ipatch",
                                                                                                          ValidateSAMLEmailsConfig)
                                                                                                        (Description
                                                                                                           ""
                                                                                                         :> (Summary
                                                                                                               "Patch config for validateSAMLemails"
                                                                                                             :> (CanThrow
                                                                                                                   OperationDenied
                                                                                                                 :> (CanThrow
                                                                                                                       'NotATeamMember
                                                                                                                     :> (CanThrow
                                                                                                                           'TeamNotFound
                                                                                                                         :> (CanThrow
                                                                                                                               TeamFeatureError
                                                                                                                             :> (CanThrowMany
                                                                                                                                   '[]
                                                                                                                                 :> ("teams"
                                                                                                                                     :> (Capture
                                                                                                                                           "tid"
                                                                                                                                           TeamId
                                                                                                                                         :> ("features"
                                                                                                                                             :> ("validateSAMLemails"
                                                                                                                                                 :> (ReqBody
                                                                                                                                                       '[JSON]
                                                                                                                                                       (LockableFeaturePatch
                                                                                                                                                          ValidateSAMLEmailsConfig)
                                                                                                                                                     :> Patch
                                                                                                                                                          '[JSON]
                                                                                                                                                          (LockableFeature
                                                                                                                                                             ValidateSAMLEmailsConfig)))))))))))))))
                                                                                          :<|> ((Named
                                                                                                   '("iget",
                                                                                                     DigitalSignaturesConfig)
                                                                                                   (Description
                                                                                                      ""
                                                                                                    :> (Summary
                                                                                                          "Get config for digitalSignatures"
                                                                                                        :> (CanThrow
                                                                                                              OperationDenied
                                                                                                            :> (CanThrow
                                                                                                                  'NotATeamMember
                                                                                                                :> (CanThrow
                                                                                                                      'TeamNotFound
                                                                                                                    :> ("teams"
                                                                                                                        :> (Capture
                                                                                                                              "tid"
                                                                                                                              TeamId
                                                                                                                            :> ("features"
                                                                                                                                :> ("digitalSignatures"
                                                                                                                                    :> Get
                                                                                                                                         '[JSON]
                                                                                                                                         (LockableFeature
                                                                                                                                            DigitalSignaturesConfig))))))))))
                                                                                                 :<|> (Named
                                                                                                         '("iput",
                                                                                                           DigitalSignaturesConfig)
                                                                                                         (Description
                                                                                                            ""
                                                                                                          :> (Summary
                                                                                                                "Put config for digitalSignatures"
                                                                                                              :> (CanThrow
                                                                                                                    OperationDenied
                                                                                                                  :> (CanThrow
                                                                                                                        'NotATeamMember
                                                                                                                      :> (CanThrow
                                                                                                                            'TeamNotFound
                                                                                                                          :> (CanThrow
                                                                                                                                TeamFeatureError
                                                                                                                              :> (CanThrowMany
                                                                                                                                    '[]
                                                                                                                                  :> ("teams"
                                                                                                                                      :> (Capture
                                                                                                                                            "tid"
                                                                                                                                            TeamId
                                                                                                                                          :> ("features"
                                                                                                                                              :> ("digitalSignatures"
                                                                                                                                                  :> (ReqBody
                                                                                                                                                        '[JSON]
                                                                                                                                                        (Feature
                                                                                                                                                           DigitalSignaturesConfig)
                                                                                                                                                      :> Put
                                                                                                                                                           '[JSON]
                                                                                                                                                           (LockableFeature
                                                                                                                                                              DigitalSignaturesConfig)))))))))))))
                                                                                                       :<|> Named
                                                                                                              '("ipatch",
                                                                                                                DigitalSignaturesConfig)
                                                                                                              (Description
                                                                                                                 ""
                                                                                                               :> (Summary
                                                                                                                     "Patch config for digitalSignatures"
                                                                                                                   :> (CanThrow
                                                                                                                         OperationDenied
                                                                                                                       :> (CanThrow
                                                                                                                             'NotATeamMember
                                                                                                                           :> (CanThrow
                                                                                                                                 'TeamNotFound
                                                                                                                               :> (CanThrow
                                                                                                                                     TeamFeatureError
                                                                                                                                   :> (CanThrowMany
                                                                                                                                         '[]
                                                                                                                                       :> ("teams"
                                                                                                                                           :> (Capture
                                                                                                                                                 "tid"
                                                                                                                                                 TeamId
                                                                                                                                               :> ("features"
                                                                                                                                                   :> ("digitalSignatures"
                                                                                                                                                       :> (ReqBody
                                                                                                                                                             '[JSON]
                                                                                                                                                             (LockableFeaturePatch
                                                                                                                                                                DigitalSignaturesConfig)
                                                                                                                                                           :> Patch
                                                                                                                                                                '[JSON]
                                                                                                                                                                (LockableFeature
                                                                                                                                                                   DigitalSignaturesConfig)))))))))))))))
                                                                                                :<|> ((Named
                                                                                                         '("iget",
                                                                                                           AppLockConfig)
                                                                                                         (Description
                                                                                                            ""
                                                                                                          :> (Summary
                                                                                                                "Get config for appLock"
                                                                                                              :> (CanThrow
                                                                                                                    OperationDenied
                                                                                                                  :> (CanThrow
                                                                                                                        'NotATeamMember
                                                                                                                      :> (CanThrow
                                                                                                                            'TeamNotFound
                                                                                                                          :> ("teams"
                                                                                                                              :> (Capture
                                                                                                                                    "tid"
                                                                                                                                    TeamId
                                                                                                                                  :> ("features"
                                                                                                                                      :> ("appLock"
                                                                                                                                          :> Get
                                                                                                                                               '[JSON]
                                                                                                                                               (LockableFeature
                                                                                                                                                  AppLockConfig))))))))))
                                                                                                       :<|> (Named
                                                                                                               '("iput",
                                                                                                                 AppLockConfig)
                                                                                                               (Description
                                                                                                                  ""
                                                                                                                :> (Summary
                                                                                                                      "Put config for appLock"
                                                                                                                    :> (CanThrow
                                                                                                                          OperationDenied
                                                                                                                        :> (CanThrow
                                                                                                                              'NotATeamMember
                                                                                                                            :> (CanThrow
                                                                                                                                  'TeamNotFound
                                                                                                                                :> (CanThrow
                                                                                                                                      TeamFeatureError
                                                                                                                                    :> (CanThrowMany
                                                                                                                                          '[]
                                                                                                                                        :> ("teams"
                                                                                                                                            :> (Capture
                                                                                                                                                  "tid"
                                                                                                                                                  TeamId
                                                                                                                                                :> ("features"
                                                                                                                                                    :> ("appLock"
                                                                                                                                                        :> (ReqBody
                                                                                                                                                              '[JSON]
                                                                                                                                                              (Feature
                                                                                                                                                                 AppLockConfig)
                                                                                                                                                            :> Put
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 (LockableFeature
                                                                                                                                                                    AppLockConfig)))))))))))))
                                                                                                             :<|> Named
                                                                                                                    '("ipatch",
                                                                                                                      AppLockConfig)
                                                                                                                    (Description
                                                                                                                       ""
                                                                                                                     :> (Summary
                                                                                                                           "Patch config for appLock"
                                                                                                                         :> (CanThrow
                                                                                                                               OperationDenied
                                                                                                                             :> (CanThrow
                                                                                                                                   'NotATeamMember
                                                                                                                                 :> (CanThrow
                                                                                                                                       'TeamNotFound
                                                                                                                                     :> (CanThrow
                                                                                                                                           TeamFeatureError
                                                                                                                                         :> (CanThrowMany
                                                                                                                                               '[]
                                                                                                                                             :> ("teams"
                                                                                                                                                 :> (Capture
                                                                                                                                                       "tid"
                                                                                                                                                       TeamId
                                                                                                                                                     :> ("features"
                                                                                                                                                         :> ("appLock"
                                                                                                                                                             :> (ReqBody
                                                                                                                                                                   '[JSON]
                                                                                                                                                                   (LockableFeaturePatch
                                                                                                                                                                      AppLockConfig)
                                                                                                                                                                 :> Patch
                                                                                                                                                                      '[JSON]
                                                                                                                                                                      (LockableFeature
                                                                                                                                                                         AppLockConfig)))))))))))))))
                                                                                                      :<|> ((Named
                                                                                                               '("iget",
                                                                                                                 FileSharingConfig)
                                                                                                               (Description
                                                                                                                  ""
                                                                                                                :> (Summary
                                                                                                                      "Get config for fileSharing"
                                                                                                                    :> (CanThrow
                                                                                                                          OperationDenied
                                                                                                                        :> (CanThrow
                                                                                                                              'NotATeamMember
                                                                                                                            :> (CanThrow
                                                                                                                                  'TeamNotFound
                                                                                                                                :> ("teams"
                                                                                                                                    :> (Capture
                                                                                                                                          "tid"
                                                                                                                                          TeamId
                                                                                                                                        :> ("features"
                                                                                                                                            :> ("fileSharing"
                                                                                                                                                :> Get
                                                                                                                                                     '[JSON]
                                                                                                                                                     (LockableFeature
                                                                                                                                                        FileSharingConfig))))))))))
                                                                                                             :<|> (Named
                                                                                                                     '("iput",
                                                                                                                       FileSharingConfig)
                                                                                                                     (Description
                                                                                                                        ""
                                                                                                                      :> (Summary
                                                                                                                            "Put config for fileSharing"
                                                                                                                          :> (CanThrow
                                                                                                                                OperationDenied
                                                                                                                              :> (CanThrow
                                                                                                                                    'NotATeamMember
                                                                                                                                  :> (CanThrow
                                                                                                                                        'TeamNotFound
                                                                                                                                      :> (CanThrow
                                                                                                                                            TeamFeatureError
                                                                                                                                          :> (CanThrowMany
                                                                                                                                                '[]
                                                                                                                                              :> ("teams"
                                                                                                                                                  :> (Capture
                                                                                                                                                        "tid"
                                                                                                                                                        TeamId
                                                                                                                                                      :> ("features"
                                                                                                                                                          :> ("fileSharing"
                                                                                                                                                              :> (ReqBody
                                                                                                                                                                    '[JSON]
                                                                                                                                                                    (Feature
                                                                                                                                                                       FileSharingConfig)
                                                                                                                                                                  :> Put
                                                                                                                                                                       '[JSON]
                                                                                                                                                                       (LockableFeature
                                                                                                                                                                          FileSharingConfig)))))))))))))
                                                                                                                   :<|> Named
                                                                                                                          '("ipatch",
                                                                                                                            FileSharingConfig)
                                                                                                                          (Description
                                                                                                                             ""
                                                                                                                           :> (Summary
                                                                                                                                 "Patch config for fileSharing"
                                                                                                                               :> (CanThrow
                                                                                                                                     OperationDenied
                                                                                                                                   :> (CanThrow
                                                                                                                                         'NotATeamMember
                                                                                                                                       :> (CanThrow
                                                                                                                                             'TeamNotFound
                                                                                                                                           :> (CanThrow
                                                                                                                                                 TeamFeatureError
                                                                                                                                               :> (CanThrowMany
                                                                                                                                                     '[]
                                                                                                                                                   :> ("teams"
                                                                                                                                                       :> (Capture
                                                                                                                                                             "tid"
                                                                                                                                                             TeamId
                                                                                                                                                           :> ("features"
                                                                                                                                                               :> ("fileSharing"
                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                         '[JSON]
                                                                                                                                                                         (LockableFeaturePatch
                                                                                                                                                                            FileSharingConfig)
                                                                                                                                                                       :> Patch
                                                                                                                                                                            '[JSON]
                                                                                                                                                                            (LockableFeature
                                                                                                                                                                               FileSharingConfig)))))))))))))))
                                                                                                            :<|> (Named
                                                                                                                    '("iget",
                                                                                                                      ClassifiedDomainsConfig)
                                                                                                                    (Description
                                                                                                                       ""
                                                                                                                     :> (Summary
                                                                                                                           "Get config for classifiedDomains"
                                                                                                                         :> (CanThrow
                                                                                                                               OperationDenied
                                                                                                                             :> (CanThrow
                                                                                                                                   'NotATeamMember
                                                                                                                                 :> (CanThrow
                                                                                                                                       'TeamNotFound
                                                                                                                                     :> ("teams"
                                                                                                                                         :> (Capture
                                                                                                                                               "tid"
                                                                                                                                               TeamId
                                                                                                                                             :> ("features"
                                                                                                                                                 :> ("classifiedDomains"
                                                                                                                                                     :> Get
                                                                                                                                                          '[JSON]
                                                                                                                                                          (LockableFeature
                                                                                                                                                             ClassifiedDomainsConfig))))))))))
                                                                                                                  :<|> ((Named
                                                                                                                           '("iget",
                                                                                                                             ConferenceCallingConfig)
                                                                                                                           (Description
                                                                                                                              ""
                                                                                                                            :> (Summary
                                                                                                                                  "Get config for conferenceCalling"
                                                                                                                                :> (CanThrow
                                                                                                                                      OperationDenied
                                                                                                                                    :> (CanThrow
                                                                                                                                          'NotATeamMember
                                                                                                                                        :> (CanThrow
                                                                                                                                              'TeamNotFound
                                                                                                                                            :> ("teams"
                                                                                                                                                :> (Capture
                                                                                                                                                      "tid"
                                                                                                                                                      TeamId
                                                                                                                                                    :> ("features"
                                                                                                                                                        :> ("conferenceCalling"
                                                                                                                                                            :> Get
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 (LockableFeature
                                                                                                                                                                    ConferenceCallingConfig))))))))))
                                                                                                                         :<|> (Named
                                                                                                                                 '("iput",
                                                                                                                                   ConferenceCallingConfig)
                                                                                                                                 (Description
                                                                                                                                    ""
                                                                                                                                  :> (Summary
                                                                                                                                        "Put config for conferenceCalling"
                                                                                                                                      :> (CanThrow
                                                                                                                                            OperationDenied
                                                                                                                                          :> (CanThrow
                                                                                                                                                'NotATeamMember
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'TeamNotFound
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        TeamFeatureError
                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                            '[]
                                                                                                                                                          :> ("teams"
                                                                                                                                                              :> (Capture
                                                                                                                                                                    "tid"
                                                                                                                                                                    TeamId
                                                                                                                                                                  :> ("features"
                                                                                                                                                                      :> ("conferenceCalling"
                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                '[JSON]
                                                                                                                                                                                (Feature
                                                                                                                                                                                   ConferenceCallingConfig)
                                                                                                                                                                              :> Put
                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                      ConferenceCallingConfig)))))))))))))
                                                                                                                               :<|> Named
                                                                                                                                      '("ipatch",
                                                                                                                                        ConferenceCallingConfig)
                                                                                                                                      (Description
                                                                                                                                         ""
                                                                                                                                       :> (Summary
                                                                                                                                             "Patch config for conferenceCalling"
                                                                                                                                           :> (CanThrow
                                                                                                                                                 OperationDenied
                                                                                                                                               :> (CanThrow
                                                                                                                                                     'NotATeamMember
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'TeamNotFound
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             TeamFeatureError
                                                                                                                                                           :> (CanThrowMany
                                                                                                                                                                 '[]
                                                                                                                                                               :> ("teams"
                                                                                                                                                                   :> (Capture
                                                                                                                                                                         "tid"
                                                                                                                                                                         TeamId
                                                                                                                                                                       :> ("features"
                                                                                                                                                                           :> ("conferenceCalling"
                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                     (LockableFeaturePatch
                                                                                                                                                                                        ConferenceCallingConfig)
                                                                                                                                                                                   :> Patch
                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                           ConferenceCallingConfig)))))))))))))))
                                                                                                                        :<|> ((Named
                                                                                                                                 '("iget",
                                                                                                                                   SelfDeletingMessagesConfig)
                                                                                                                                 (Description
                                                                                                                                    ""
                                                                                                                                  :> (Summary
                                                                                                                                        "Get config for selfDeletingMessages"
                                                                                                                                      :> (CanThrow
                                                                                                                                            OperationDenied
                                                                                                                                          :> (CanThrow
                                                                                                                                                'NotATeamMember
                                                                                                                                              :> (CanThrow
                                                                                                                                                    'TeamNotFound
                                                                                                                                                  :> ("teams"
                                                                                                                                                      :> (Capture
                                                                                                                                                            "tid"
                                                                                                                                                            TeamId
                                                                                                                                                          :> ("features"
                                                                                                                                                              :> ("selfDeletingMessages"
                                                                                                                                                                  :> Get
                                                                                                                                                                       '[JSON]
                                                                                                                                                                       (LockableFeature
                                                                                                                                                                          SelfDeletingMessagesConfig))))))))))
                                                                                                                               :<|> (Named
                                                                                                                                       '("iput",
                                                                                                                                         SelfDeletingMessagesConfig)
                                                                                                                                       (Description
                                                                                                                                          ""
                                                                                                                                        :> (Summary
                                                                                                                                              "Put config for selfDeletingMessages"
                                                                                                                                            :> (CanThrow
                                                                                                                                                  OperationDenied
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'NotATeamMember
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'TeamNotFound
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              TeamFeatureError
                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                  '[]
                                                                                                                                                                :> ("teams"
                                                                                                                                                                    :> (Capture
                                                                                                                                                                          "tid"
                                                                                                                                                                          TeamId
                                                                                                                                                                        :> ("features"
                                                                                                                                                                            :> ("selfDeletingMessages"
                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                      (Feature
                                                                                                                                                                                         SelfDeletingMessagesConfig)
                                                                                                                                                                                    :> Put
                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                            SelfDeletingMessagesConfig)))))))))))))
                                                                                                                                     :<|> Named
                                                                                                                                            '("ipatch",
                                                                                                                                              SelfDeletingMessagesConfig)
                                                                                                                                            (Description
                                                                                                                                               ""
                                                                                                                                             :> (Summary
                                                                                                                                                   "Patch config for selfDeletingMessages"
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       OperationDenied
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           'NotATeamMember
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'TeamNotFound
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   TeamFeatureError
                                                                                                                                                                 :> (CanThrowMany
                                                                                                                                                                       '[]
                                                                                                                                                                     :> ("teams"
                                                                                                                                                                         :> (Capture
                                                                                                                                                                               "tid"
                                                                                                                                                                               TeamId
                                                                                                                                                                             :> ("features"
                                                                                                                                                                                 :> ("selfDeletingMessages"
                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                           (LockableFeaturePatch
                                                                                                                                                                                              SelfDeletingMessagesConfig)
                                                                                                                                                                                         :> Patch
                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                 SelfDeletingMessagesConfig)))))))))))))))
                                                                                                                              :<|> ((Named
                                                                                                                                       '("iget",
                                                                                                                                         GuestLinksConfig)
                                                                                                                                       (Description
                                                                                                                                          ""
                                                                                                                                        :> (Summary
                                                                                                                                              "Get config for conversationGuestLinks"
                                                                                                                                            :> (CanThrow
                                                                                                                                                  OperationDenied
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'NotATeamMember
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'TeamNotFound
                                                                                                                                                        :> ("teams"
                                                                                                                                                            :> (Capture
                                                                                                                                                                  "tid"
                                                                                                                                                                  TeamId
                                                                                                                                                                :> ("features"
                                                                                                                                                                    :> ("conversationGuestLinks"
                                                                                                                                                                        :> Get
                                                                                                                                                                             '[JSON]
                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                GuestLinksConfig))))))))))
                                                                                                                                     :<|> (Named
                                                                                                                                             '("iput",
                                                                                                                                               GuestLinksConfig)
                                                                                                                                             (Description
                                                                                                                                                ""
                                                                                                                                              :> (Summary
                                                                                                                                                    "Put config for conversationGuestLinks"
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        OperationDenied
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'NotATeamMember
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'TeamNotFound
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    TeamFeatureError
                                                                                                                                                                  :> (CanThrowMany
                                                                                                                                                                        '[]
                                                                                                                                                                      :> ("teams"
                                                                                                                                                                          :> (Capture
                                                                                                                                                                                "tid"
                                                                                                                                                                                TeamId
                                                                                                                                                                              :> ("features"
                                                                                                                                                                                  :> ("conversationGuestLinks"
                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                            (Feature
                                                                                                                                                                                               GuestLinksConfig)
                                                                                                                                                                                          :> Put
                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                  GuestLinksConfig)))))))))))))
                                                                                                                                           :<|> Named
                                                                                                                                                  '("ipatch",
                                                                                                                                                    GuestLinksConfig)
                                                                                                                                                  (Description
                                                                                                                                                     ""
                                                                                                                                                   :> (Summary
                                                                                                                                                         "Patch config for conversationGuestLinks"
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             OperationDenied
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 'NotATeamMember
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         TeamFeatureError
                                                                                                                                                                       :> (CanThrowMany
                                                                                                                                                                             '[]
                                                                                                                                                                           :> ("teams"
                                                                                                                                                                               :> (Capture
                                                                                                                                                                                     "tid"
                                                                                                                                                                                     TeamId
                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                       :> ("conversationGuestLinks"
                                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                 (LockableFeaturePatch
                                                                                                                                                                                                    GuestLinksConfig)
                                                                                                                                                                                               :> Patch
                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                       GuestLinksConfig)))))))))))))))
                                                                                                                                    :<|> ((Named
                                                                                                                                             '("iget",
                                                                                                                                               SndFactorPasswordChallengeConfig)
                                                                                                                                             (Description
                                                                                                                                                ""
                                                                                                                                              :> (Summary
                                                                                                                                                    "Get config for sndFactorPasswordChallenge"
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        OperationDenied
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'NotATeamMember
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                'TeamNotFound
                                                                                                                                                              :> ("teams"
                                                                                                                                                                  :> (Capture
                                                                                                                                                                        "tid"
                                                                                                                                                                        TeamId
                                                                                                                                                                      :> ("features"
                                                                                                                                                                          :> ("sndFactorPasswordChallenge"
                                                                                                                                                                              :> Get
                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                      SndFactorPasswordChallengeConfig))))))))))
                                                                                                                                           :<|> (Named
                                                                                                                                                   '("iput",
                                                                                                                                                     SndFactorPasswordChallengeConfig)
                                                                                                                                                   (Description
                                                                                                                                                      ""
                                                                                                                                                    :> (Summary
                                                                                                                                                          "Put config for sndFactorPasswordChallenge"
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              OperationDenied
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          TeamFeatureError
                                                                                                                                                                        :> (CanThrowMany
                                                                                                                                                                              '[]
                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                :> (Capture
                                                                                                                                                                                      "tid"
                                                                                                                                                                                      TeamId
                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                        :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                  (Feature
                                                                                                                                                                                                     SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                :> Put
                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                        SndFactorPasswordChallengeConfig)))))))))))))
                                                                                                                                                 :<|> Named
                                                                                                                                                        '("ipatch",
                                                                                                                                                          SndFactorPasswordChallengeConfig)
                                                                                                                                                        (Description
                                                                                                                                                           ""
                                                                                                                                                         :> (Summary
                                                                                                                                                               "Patch config for sndFactorPasswordChallenge"
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   OperationDenied
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               TeamFeatureError
                                                                                                                                                                             :> (CanThrowMany
                                                                                                                                                                                   '[]
                                                                                                                                                                                 :> ("teams"
                                                                                                                                                                                     :> (Capture
                                                                                                                                                                                           "tid"
                                                                                                                                                                                           TeamId
                                                                                                                                                                                         :> ("features"
                                                                                                                                                                                             :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                       (LockableFeaturePatch
                                                                                                                                                                                                          SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                     :> Patch
                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                             SndFactorPasswordChallengeConfig)))))))))))))))
                                                                                                                                          :<|> ((Named
                                                                                                                                                   '("iget",
                                                                                                                                                     MLSConfig)
                                                                                                                                                   (Description
                                                                                                                                                      ""
                                                                                                                                                    :> (Summary
                                                                                                                                                          "Get config for mls"
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              OperationDenied
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                    :> ("teams"
                                                                                                                                                                        :> (Capture
                                                                                                                                                                              "tid"
                                                                                                                                                                              TeamId
                                                                                                                                                                            :> ("features"
                                                                                                                                                                                :> ("mls"
                                                                                                                                                                                    :> Get
                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                            MLSConfig))))))))))
                                                                                                                                                 :<|> (Named
                                                                                                                                                         '("iput",
                                                                                                                                                           MLSConfig)
                                                                                                                                                         (Description
                                                                                                                                                            ""
                                                                                                                                                          :> (Summary
                                                                                                                                                                "Put config for mls"
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    OperationDenied
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                TeamFeatureError
                                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                                    '[]
                                                                                                                                                                                  :> ("teams"
                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                            "tid"
                                                                                                                                                                                            TeamId
                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                              :> ("mls"
                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                        (Feature
                                                                                                                                                                                                           MLSConfig)
                                                                                                                                                                                                      :> Put
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                              MLSConfig)))))))))))))
                                                                                                                                                       :<|> Named
                                                                                                                                                              '("ipatch",
                                                                                                                                                                MLSConfig)
                                                                                                                                                              (Description
                                                                                                                                                                 ""
                                                                                                                                                               :> (Summary
                                                                                                                                                                     "Patch config for mls"
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         OperationDenied
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     TeamFeatureError
                                                                                                                                                                                   :> (CanThrowMany
                                                                                                                                                                                         '[]
                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                 TeamId
                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                   :> ("mls"
                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                             (LockableFeaturePatch
                                                                                                                                                                                                                MLSConfig)
                                                                                                                                                                                                           :> Patch
                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                   MLSConfig)))))))))))))))
                                                                                                                                                :<|> ((Named
                                                                                                                                                         '("iget",
                                                                                                                                                           ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                         (Description
                                                                                                                                                            ""
                                                                                                                                                          :> (Summary
                                                                                                                                                                "Get config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    OperationDenied
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                          :> ("teams"
                                                                                                                                                                              :> (Capture
                                                                                                                                                                                    "tid"
                                                                                                                                                                                    TeamId
                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                      :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                          :> Get
                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                  ExposeInvitationURLsToTeamAdminConfig))))))))))
                                                                                                                                                       :<|> (Named
                                                                                                                                                               '("iput",
                                                                                                                                                                 ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                               (Description
                                                                                                                                                                  ""
                                                                                                                                                                :> (Summary
                                                                                                                                                                      "Put config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          OperationDenied
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      TeamFeatureError
                                                                                                                                                                                    :> (CanThrowMany
                                                                                                                                                                                          '[]
                                                                                                                                                                                        :> ("teams"
                                                                                                                                                                                            :> (Capture
                                                                                                                                                                                                  "tid"
                                                                                                                                                                                                  TeamId
                                                                                                                                                                                                :> ("features"
                                                                                                                                                                                                    :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                              (Feature
                                                                                                                                                                                                                 ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                                            :> Put
                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                    ExposeInvitationURLsToTeamAdminConfig)))))))))))))
                                                                                                                                                             :<|> Named
                                                                                                                                                                    '("ipatch",
                                                                                                                                                                      ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                    (Description
                                                                                                                                                                       ""
                                                                                                                                                                     :> (Summary
                                                                                                                                                                           "Patch config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               OperationDenied
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           TeamFeatureError
                                                                                                                                                                                         :> (CanThrowMany
                                                                                                                                                                                               '[]
                                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                       "tid"
                                                                                                                                                                                                       TeamId
                                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                                         :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                   (LockableFeaturePatch
                                                                                                                                                                                                                      ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                                                 :> Patch
                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                         ExposeInvitationURLsToTeamAdminConfig)))))))))))))))
                                                                                                                                                      :<|> ((Named
                                                                                                                                                               '("iget",
                                                                                                                                                                 OutlookCalIntegrationConfig)
                                                                                                                                                               (Description
                                                                                                                                                                  ""
                                                                                                                                                                :> (Summary
                                                                                                                                                                      "Get config for outlookCalIntegration"
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          OperationDenied
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'NotATeamMember
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                          "tid"
                                                                                                                                                                                          TeamId
                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                            :> ("outlookCalIntegration"
                                                                                                                                                                                                :> Get
                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                        OutlookCalIntegrationConfig))))))))))
                                                                                                                                                             :<|> (Named
                                                                                                                                                                     '("iput",
                                                                                                                                                                       OutlookCalIntegrationConfig)
                                                                                                                                                                     (Description
                                                                                                                                                                        ""
                                                                                                                                                                      :> (Summary
                                                                                                                                                                            "Put config for outlookCalIntegration"
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                OperationDenied
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            TeamFeatureError
                                                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                                                '[]
                                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                                        "tid"
                                                                                                                                                                                                        TeamId
                                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                                          :> ("outlookCalIntegration"
                                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                    (Feature
                                                                                                                                                                                                                       OutlookCalIntegrationConfig)
                                                                                                                                                                                                                  :> Put
                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                          OutlookCalIntegrationConfig)))))))))))))
                                                                                                                                                                   :<|> Named
                                                                                                                                                                          '("ipatch",
                                                                                                                                                                            OutlookCalIntegrationConfig)
                                                                                                                                                                          (Description
                                                                                                                                                                             ""
                                                                                                                                                                           :> (Summary
                                                                                                                                                                                 "Patch config for outlookCalIntegration"
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     OperationDenied
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         'NotATeamMember
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             'TeamNotFound
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 TeamFeatureError
                                                                                                                                                                                               :> (CanThrowMany
                                                                                                                                                                                                     '[]
                                                                                                                                                                                                   :> ("teams"
                                                                                                                                                                                                       :> (Capture
                                                                                                                                                                                                             "tid"
                                                                                                                                                                                                             TeamId
                                                                                                                                                                                                           :> ("features"
                                                                                                                                                                                                               :> ("outlookCalIntegration"
                                                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                         (LockableFeaturePatch
                                                                                                                                                                                                                            OutlookCalIntegrationConfig)
                                                                                                                                                                                                                       :> Patch
                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                               OutlookCalIntegrationConfig)))))))))))))))
                                                                                                                                                            :<|> ((Named
                                                                                                                                                                     '("iget",
                                                                                                                                                                       MlsE2EIdConfig)
                                                                                                                                                                     (Description
                                                                                                                                                                        ""
                                                                                                                                                                      :> (Summary
                                                                                                                                                                            "Get config for mlsE2EId"
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                OperationDenied
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                                      :> ("teams"
                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                "tid"
                                                                                                                                                                                                TeamId
                                                                                                                                                                                              :> ("features"
                                                                                                                                                                                                  :> ("mlsE2EId"
                                                                                                                                                                                                      :> Get
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                              MlsE2EIdConfig))))))))))
                                                                                                                                                                   :<|> (Named
                                                                                                                                                                           '("iput",
                                                                                                                                                                             MlsE2EIdConfig)
                                                                                                                                                                           (Description
                                                                                                                                                                              ""
                                                                                                                                                                            :> (Summary
                                                                                                                                                                                  "Put config for mlsE2EId"
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  TeamFeatureError
                                                                                                                                                                                                :> (CanThrowMany
                                                                                                                                                                                                      '[]
                                                                                                                                                                                                    :> ("teams"
                                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                                              "tid"
                                                                                                                                                                                                              TeamId
                                                                                                                                                                                                            :> ("features"
                                                                                                                                                                                                                :> ("mlsE2EId"
                                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                          (Feature
                                                                                                                                                                                                                             MlsE2EIdConfig)
                                                                                                                                                                                                                        :> Put
                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                                MlsE2EIdConfig)))))))))))))
                                                                                                                                                                         :<|> Named
                                                                                                                                                                                '("ipatch",
                                                                                                                                                                                  MlsE2EIdConfig)
                                                                                                                                                                                (Description
                                                                                                                                                                                   ""
                                                                                                                                                                                 :> (Summary
                                                                                                                                                                                       "Patch config for mlsE2EId"
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           OperationDenied
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               'NotATeamMember
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       TeamFeatureError
                                                                                                                                                                                                     :> (CanThrowMany
                                                                                                                                                                                                           '[]
                                                                                                                                                                                                         :> ("teams"
                                                                                                                                                                                                             :> (Capture
                                                                                                                                                                                                                   "tid"
                                                                                                                                                                                                                   TeamId
                                                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                                                     :> ("mlsE2EId"
                                                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                               (LockableFeaturePatch
                                                                                                                                                                                                                                  MlsE2EIdConfig)
                                                                                                                                                                                                                             :> Patch
                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                                                     MlsE2EIdConfig)))))))))))))))
                                                                                                                                                                  :<|> ((Named
                                                                                                                                                                           '("iget",
                                                                                                                                                                             MlsMigrationConfig)
                                                                                                                                                                           (Description
                                                                                                                                                                              ""
                                                                                                                                                                            :> (Summary
                                                                                                                                                                                  "Get config for mlsMigration"
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      OperationDenied
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                      "tid"
                                                                                                                                                                                                      TeamId
                                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                                        :> ("mlsMigration"
                                                                                                                                                                                                            :> Get
                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                                    MlsMigrationConfig))))))))))
                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                 '("iput",
                                                                                                                                                                                   MlsMigrationConfig)
                                                                                                                                                                                 (Description
                                                                                                                                                                                    ""
                                                                                                                                                                                  :> (Summary
                                                                                                                                                                                        "Put config for mlsMigration"
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                                                            '[]
                                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                                      :> ("mlsMigration"
                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                (Feature
                                                                                                                                                                                                                                   MlsMigrationConfig)
                                                                                                                                                                                                                              :> Put
                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                      MlsMigrationConfig)))))))))))))
                                                                                                                                                                               :<|> Named
                                                                                                                                                                                      '("ipatch",
                                                                                                                                                                                        MlsMigrationConfig)
                                                                                                                                                                                      (Description
                                                                                                                                                                                         ""
                                                                                                                                                                                       :> (Summary
                                                                                                                                                                                             "Patch config for mlsMigration"
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 OperationDenied
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                             TeamFeatureError
                                                                                                                                                                                                           :> (CanThrowMany
                                                                                                                                                                                                                 '[]
                                                                                                                                                                                                               :> ("teams"
                                                                                                                                                                                                                   :> (Capture
                                                                                                                                                                                                                         "tid"
                                                                                                                                                                                                                         TeamId
                                                                                                                                                                                                                       :> ("features"
                                                                                                                                                                                                                           :> ("mlsMigration"
                                                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                     (LockableFeaturePatch
                                                                                                                                                                                                                                        MlsMigrationConfig)
                                                                                                                                                                                                                                   :> Patch
                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                                                           MlsMigrationConfig)))))))))))))))
                                                                                                                                                                        :<|> ((Named
                                                                                                                                                                                 '("iget",
                                                                                                                                                                                   EnforceFileDownloadLocationConfig)
                                                                                                                                                                                 (Description
                                                                                                                                                                                    "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                  :> (Summary
                                                                                                                                                                                        "Get config for enforceFileDownloadLocation"
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                  :> ("teams"
                                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                                            "tid"
                                                                                                                                                                                                            TeamId
                                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                                              :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                  :> Get
                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                                          EnforceFileDownloadLocationConfig))))))))))
                                                                                                                                                                               :<|> (Named
                                                                                                                                                                                       '("iput",
                                                                                                                                                                                         EnforceFileDownloadLocationConfig)
                                                                                                                                                                                       (Description
                                                                                                                                                                                          "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                        :> (Summary
                                                                                                                                                                                              "Put config for enforceFileDownloadLocation"
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                                              TeamFeatureError
                                                                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                                                                  '[]
                                                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                                          "tid"
                                                                                                                                                                                                                          TeamId
                                                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                                                            :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                      (Feature
                                                                                                                                                                                                                                         EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                    :> Put
                                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                                            EnforceFileDownloadLocationConfig)))))))))))))
                                                                                                                                                                                     :<|> Named
                                                                                                                                                                                            '("ipatch",
                                                                                                                                                                                              EnforceFileDownloadLocationConfig)
                                                                                                                                                                                            (Description
                                                                                                                                                                                               "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                             :> (Summary
                                                                                                                                                                                                   "Patch config for enforceFileDownloadLocation"
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                   TeamFeatureError
                                                                                                                                                                                                                 :> (CanThrowMany
                                                                                                                                                                                                                       '[]
                                                                                                                                                                                                                     :> ("teams"
                                                                                                                                                                                                                         :> (Capture
                                                                                                                                                                                                                               "tid"
                                                                                                                                                                                                                               TeamId
                                                                                                                                                                                                                             :> ("features"
                                                                                                                                                                                                                                 :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                           (LockableFeaturePatch
                                                                                                                                                                                                                                              EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                         :> Patch
                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                                 EnforceFileDownloadLocationConfig)))))))))))))))
                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                      '("iget",
                                                                                                                                                                                        LimitedEventFanoutConfig)
                                                                                                                                                                                      (Description
                                                                                                                                                                                         ""
                                                                                                                                                                                       :> (Summary
                                                                                                                                                                                             "Get config for limitedEventFanout"
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 OperationDenied
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                                 TeamId
                                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                                   :> ("limitedEventFanout"
                                                                                                                                                                                                                       :> Get
                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                                                               LimitedEventFanoutConfig))))))))))
                                                                                                                                                                                    :<|> (Named
                                                                                                                                                                                            '("iput",
                                                                                                                                                                                              LimitedEventFanoutConfig)
                                                                                                                                                                                            (Description
                                                                                                                                                                                               ""
                                                                                                                                                                                             :> (Summary
                                                                                                                                                                                                   "Put config for limitedEventFanout"
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       OperationDenied
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                                   TeamFeatureError
                                                                                                                                                                                                                 :> (CanThrowMany
                                                                                                                                                                                                                       '[]
                                                                                                                                                                                                                     :> ("teams"
                                                                                                                                                                                                                         :> (Capture
                                                                                                                                                                                                                               "tid"
                                                                                                                                                                                                                               TeamId
                                                                                                                                                                                                                             :> ("features"
                                                                                                                                                                                                                                 :> ("limitedEventFanout"
                                                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                           (Feature
                                                                                                                                                                                                                                              LimitedEventFanoutConfig)
                                                                                                                                                                                                                                         :> Put
                                                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                                                 LimitedEventFanoutConfig)))))))))))))
                                                                                                                                                                                          :<|> Named
                                                                                                                                                                                                 '("ipatch",
                                                                                                                                                                                                   LimitedEventFanoutConfig)
                                                                                                                                                                                                 (Description
                                                                                                                                                                                                    ""
                                                                                                                                                                                                  :> (Summary
                                                                                                                                                                                                        "Patch config for limitedEventFanout"
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            OperationDenied
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                                                                            '[]
                                                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                                                      :> ("limitedEventFanout"
                                                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                (LockableFeaturePatch
                                                                                                                                                                                                                                                   LimitedEventFanoutConfig)
                                                                                                                                                                                                                                              :> Patch
                                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                                                      LimitedEventFanoutConfig))))))))))))))))))))))))))))))))))
                                                                 :<|> (Named
                                                                         '("ilock",
                                                                           FileSharingConfig)
                                                                         (Summary
                                                                            "(Un-)lock fileSharing"
                                                                          :> (Description ""
                                                                              :> (CanThrow
                                                                                    'NotATeamMember
                                                                                  :> (CanThrow
                                                                                        'TeamNotFound
                                                                                      :> ("teams"
                                                                                          :> (Capture
                                                                                                "tid"
                                                                                                TeamId
                                                                                              :> ("features"
                                                                                                  :> ("fileSharing"
                                                                                                      :> (Capture
                                                                                                            "lockStatus"
                                                                                                            LockStatus
                                                                                                          :> Put
                                                                                                               '[JSON]
                                                                                                               LockStatusResponse)))))))))
                                                                       :<|> (Named
                                                                               '("ilock",
                                                                                 ConferenceCallingConfig)
                                                                               (Summary
                                                                                  "(Un-)lock conferenceCalling"
                                                                                :> (Description ""
                                                                                    :> (CanThrow
                                                                                          'NotATeamMember
                                                                                        :> (CanThrow
                                                                                              'TeamNotFound
                                                                                            :> ("teams"
                                                                                                :> (Capture
                                                                                                      "tid"
                                                                                                      TeamId
                                                                                                    :> ("features"
                                                                                                        :> ("conferenceCalling"
                                                                                                            :> (Capture
                                                                                                                  "lockStatus"
                                                                                                                  LockStatus
                                                                                                                :> Put
                                                                                                                     '[JSON]
                                                                                                                     LockStatusResponse)))))))))
                                                                             :<|> (Named
                                                                                     '("ilock",
                                                                                       SelfDeletingMessagesConfig)
                                                                                     (Summary
                                                                                        "(Un-)lock selfDeletingMessages"
                                                                                      :> (Description
                                                                                            ""
                                                                                          :> (CanThrow
                                                                                                'NotATeamMember
                                                                                              :> (CanThrow
                                                                                                    'TeamNotFound
                                                                                                  :> ("teams"
                                                                                                      :> (Capture
                                                                                                            "tid"
                                                                                                            TeamId
                                                                                                          :> ("features"
                                                                                                              :> ("selfDeletingMessages"
                                                                                                                  :> (Capture
                                                                                                                        "lockStatus"
                                                                                                                        LockStatus
                                                                                                                      :> Put
                                                                                                                           '[JSON]
                                                                                                                           LockStatusResponse)))))))))
                                                                                   :<|> (Named
                                                                                           '("ilock",
                                                                                             GuestLinksConfig)
                                                                                           (Summary
                                                                                              "(Un-)lock conversationGuestLinks"
                                                                                            :> (Description
                                                                                                  ""
                                                                                                :> (CanThrow
                                                                                                      'NotATeamMember
                                                                                                    :> (CanThrow
                                                                                                          'TeamNotFound
                                                                                                        :> ("teams"
                                                                                                            :> (Capture
                                                                                                                  "tid"
                                                                                                                  TeamId
                                                                                                                :> ("features"
                                                                                                                    :> ("conversationGuestLinks"
                                                                                                                        :> (Capture
                                                                                                                              "lockStatus"
                                                                                                                              LockStatus
                                                                                                                            :> Put
                                                                                                                                 '[JSON]
                                                                                                                                 LockStatusResponse)))))))))
                                                                                         :<|> (Named
                                                                                                 '("ilock",
                                                                                                   SndFactorPasswordChallengeConfig)
                                                                                                 (Summary
                                                                                                    "(Un-)lock sndFactorPasswordChallenge"
                                                                                                  :> (Description
                                                                                                        ""
                                                                                                      :> (CanThrow
                                                                                                            'NotATeamMember
                                                                                                          :> (CanThrow
                                                                                                                'TeamNotFound
                                                                                                              :> ("teams"
                                                                                                                  :> (Capture
                                                                                                                        "tid"
                                                                                                                        TeamId
                                                                                                                      :> ("features"
                                                                                                                          :> ("sndFactorPasswordChallenge"
                                                                                                                              :> (Capture
                                                                                                                                    "lockStatus"
                                                                                                                                    LockStatus
                                                                                                                                  :> Put
                                                                                                                                       '[JSON]
                                                                                                                                       LockStatusResponse)))))))))
                                                                                               :<|> (Named
                                                                                                       '("ilock",
                                                                                                         MLSConfig)
                                                                                                       (Summary
                                                                                                          "(Un-)lock mls"
                                                                                                        :> (Description
                                                                                                              ""
                                                                                                            :> (CanThrow
                                                                                                                  'NotATeamMember
                                                                                                                :> (CanThrow
                                                                                                                      'TeamNotFound
                                                                                                                    :> ("teams"
                                                                                                                        :> (Capture
                                                                                                                              "tid"
                                                                                                                              TeamId
                                                                                                                            :> ("features"
                                                                                                                                :> ("mls"
                                                                                                                                    :> (Capture
                                                                                                                                          "lockStatus"
                                                                                                                                          LockStatus
                                                                                                                                        :> Put
                                                                                                                                             '[JSON]
                                                                                                                                             LockStatusResponse)))))))))
                                                                                                     :<|> (Named
                                                                                                             '("ilock",
                                                                                                               OutlookCalIntegrationConfig)
                                                                                                             (Summary
                                                                                                                "(Un-)lock outlookCalIntegration"
                                                                                                              :> (Description
                                                                                                                    ""
                                                                                                                  :> (CanThrow
                                                                                                                        'NotATeamMember
                                                                                                                      :> (CanThrow
                                                                                                                            'TeamNotFound
                                                                                                                          :> ("teams"
                                                                                                                              :> (Capture
                                                                                                                                    "tid"
                                                                                                                                    TeamId
                                                                                                                                  :> ("features"
                                                                                                                                      :> ("outlookCalIntegration"
                                                                                                                                          :> (Capture
                                                                                                                                                "lockStatus"
                                                                                                                                                LockStatus
                                                                                                                                              :> Put
                                                                                                                                                   '[JSON]
                                                                                                                                                   LockStatusResponse)))))))))
                                                                                                           :<|> (Named
                                                                                                                   '("ilock",
                                                                                                                     MlsE2EIdConfig)
                                                                                                                   (Summary
                                                                                                                      "(Un-)lock mlsE2EId"
                                                                                                                    :> (Description
                                                                                                                          ""
                                                                                                                        :> (CanThrow
                                                                                                                              'NotATeamMember
                                                                                                                            :> (CanThrow
                                                                                                                                  'TeamNotFound
                                                                                                                                :> ("teams"
                                                                                                                                    :> (Capture
                                                                                                                                          "tid"
                                                                                                                                          TeamId
                                                                                                                                        :> ("features"
                                                                                                                                            :> ("mlsE2EId"
                                                                                                                                                :> (Capture
                                                                                                                                                      "lockStatus"
                                                                                                                                                      LockStatus
                                                                                                                                                    :> Put
                                                                                                                                                         '[JSON]
                                                                                                                                                         LockStatusResponse)))))))))
                                                                                                                 :<|> (Named
                                                                                                                         '("ilock",
                                                                                                                           MlsMigrationConfig)
                                                                                                                         (Summary
                                                                                                                            "(Un-)lock mlsMigration"
                                                                                                                          :> (Description
                                                                                                                                ""
                                                                                                                              :> (CanThrow
                                                                                                                                    'NotATeamMember
                                                                                                                                  :> (CanThrow
                                                                                                                                        'TeamNotFound
                                                                                                                                      :> ("teams"
                                                                                                                                          :> (Capture
                                                                                                                                                "tid"
                                                                                                                                                TeamId
                                                                                                                                              :> ("features"
                                                                                                                                                  :> ("mlsMigration"
                                                                                                                                                      :> (Capture
                                                                                                                                                            "lockStatus"
                                                                                                                                                            LockStatus
                                                                                                                                                          :> Put
                                                                                                                                                               '[JSON]
                                                                                                                                                               LockStatusResponse)))))))))
                                                                                                                       :<|> (Named
                                                                                                                               '("ilock",
                                                                                                                                 EnforceFileDownloadLocationConfig)
                                                                                                                               (Summary
                                                                                                                                  "(Un-)lock enforceFileDownloadLocation"
                                                                                                                                :> (Description
                                                                                                                                      "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                    :> (CanThrow
                                                                                                                                          'NotATeamMember
                                                                                                                                        :> (CanThrow
                                                                                                                                              'TeamNotFound
                                                                                                                                            :> ("teams"
                                                                                                                                                :> (Capture
                                                                                                                                                      "tid"
                                                                                                                                                      TeamId
                                                                                                                                                    :> ("features"
                                                                                                                                                        :> ("enforceFileDownloadLocation"
                                                                                                                                                            :> (Capture
                                                                                                                                                                  "lockStatus"
                                                                                                                                                                  LockStatus
                                                                                                                                                                :> Put
                                                                                                                                                                     '[JSON]
                                                                                                                                                                     LockStatusResponse)))))))))
                                                                                                                             :<|> (Named
                                                                                                                                     '("igetmulti",
                                                                                                                                       SearchVisibilityInboundConfig)
                                                                                                                                     (Summary
                                                                                                                                        "Get team feature status in bulk for feature searchVisibilityInbound"
                                                                                                                                      :> ("features-multi-teams"
                                                                                                                                          :> ("searchVisibilityInbound"
                                                                                                                                              :> (ReqBody
                                                                                                                                                    '[JSON]
                                                                                                                                                    TeamFeatureNoConfigMultiRequest
                                                                                                                                                  :> Post
                                                                                                                                                       '[JSON]
                                                                                                                                                       (TeamFeatureNoConfigMultiResponse
                                                                                                                                                          SearchVisibilityInboundConfig)))))
                                                                                                                                   :<|> Named
                                                                                                                                          "feature-configs-internal"
                                                                                                                                          (Summary
                                                                                                                                             "Get all feature configs (for user/team; if n/a fall back to site config)."
                                                                                                                                           :> ("feature-configs"
                                                                                                                                               :> (CanThrow
                                                                                                                                                     OperationDenied
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'NotATeamMember
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'TeamNotFound
                                                                                                                                                           :> (QueryParam'
                                                                                                                                                                 '[Optional,
                                                                                                                                                                   Strict,
                                                                                                                                                                   Description
                                                                                                                                                                     "Optional user id"]
                                                                                                                                                                 "user_id"
                                                                                                                                                                 UserId
                                                                                                                                                               :> Get
                                                                                                                                                                    '[JSON]
                                                                                                                                                                    AllTeamFeatures))))))))))))))))))
                                                                :<|> (IFederationAPI
                                                                      :<|> (IConversationAPI
                                                                            :<|> IEJPDAPI)))))))))))))
     Handler
forall {k} (api :: k) (r :: EffectRow) (n :: * -> *).
HasServer api '[Domain] =>
(forall x. Sem r x -> n x) -> API api r -> ServerT api n
hoistAPIHandler (Env -> Sem GalleyEffects x -> Handler x
forall a. Env -> Sem GalleyEffects a -> Handler a
toServantHandler Env
e) API
  ("i"
   :> (Named
         "status"
         ("status" :> MultiVerb 'GET '[JSON] '[RespondEmpty 200 "OK"] ())
       :<|> (Named
               "delete-user"
               (Summary
                  "Remove a user from their teams and conversations and erase their clients"
                :> (MakesFederatedCall 'Galley "on-conversation-updated"
                    :> (MakesFederatedCall 'Galley "on-mls-message-sent"
                        :> (ZLocalUser
                            :> (ZOptConn
                                :> ("user"
                                    :> MultiVerb
                                         'DELETE
                                         '[JSON]
                                         '[RespondEmpty 200 "Remove a user from Galley"]
                                         ()))))))
             :<|> (Named
                     "connect"
                     (Summary "Create a connect conversation (deprecated)"
                      :> (MakesFederatedCall 'Brig "api-version"
                          :> (MakesFederatedCall 'Galley "on-conversation-created"
                              :> (MakesFederatedCall 'Galley "on-conversation-updated"
                                  :> (CanThrow 'ConvNotFound
                                      :> (CanThrow 'InvalidOperation
                                          :> (CanThrow 'NotConnected
                                              :> (CanThrow UnreachableBackends
                                                  :> (ZLocalUser
                                                      :> (ZOptConn
                                                          :> ("conversations"
                                                              :> ("connect"
                                                                  :> (ReqBody '[JSON] Connect
                                                                      :> MultiVerb
                                                                           'POST
                                                                           '[JSON]
                                                                           '[WithHeaders
                                                                               ConversationHeaders
                                                                               Conversation
                                                                               (VersionedRespond
                                                                                  'V6
                                                                                  200
                                                                                  "Conversation existed"
                                                                                  Conversation),
                                                                             WithHeaders
                                                                               ConversationHeaders
                                                                               Conversation
                                                                               (VersionedRespond
                                                                                  'V6
                                                                                  201
                                                                                  "Conversation created"
                                                                                  Conversation)]
                                                                           (ResponseForExistedCreated
                                                                              Conversation))))))))))))))
                   :<|> (Named
                           "get-conversation-clients"
                           (Summary "Get mls conversation client list"
                            :> (CanThrow 'ConvNotFound
                                :> ("group"
                                    :> (Capture "gid" GroupId
                                        :> MultiVerb
                                             'GET
                                             '[JSON]
                                             '[Respond 200 "Clients" ClientList]
                                             ClientList))))
                         :<|> (Named
                                 "guard-legalhold-policy-conflicts"
                                 ("guard-legalhold-policy-conflicts"
                                  :> (CanThrow 'MissingLegalholdConsent
                                      :> (CanThrow 'MissingLegalholdConsentOldClients
                                          :> (ReqBody '[JSON] GuardLegalholdPolicyConflicts
                                              :> MultiVerb
                                                   'PUT
                                                   '[JSON]
                                                   '[RespondEmpty 200 "Guard Legalhold Policy"]
                                                   ()))))
                               :<|> (("legalhold"
                                      :> ("whitelisted-teams"
                                          :> (Capture "tid" TeamId
                                              :> (Named
                                                    "set-team-legalhold-whitelisted"
                                                    (MultiVerb
                                                       'PUT
                                                       '[JSON]
                                                       '[RespondEmpty
                                                           200 "Team Legalhold Whitelisted"]
                                                       ())
                                                  :<|> (Named
                                                          "unset-team-legalhold-whitelisted"
                                                          (MultiVerb
                                                             'DELETE
                                                             '[JSON]
                                                             '[RespondEmpty
                                                                 204
                                                                 "Team Legalhold un-Whitelisted"]
                                                             ())
                                                        :<|> Named
                                                               "get-team-legalhold-whitelisted"
                                                               (MultiVerb
                                                                  'GET
                                                                  '[JSON]
                                                                  '[RespondEmpty
                                                                      404
                                                                      "Team not Legalhold Whitelisted",
                                                                    RespondEmpty
                                                                      200
                                                                      "Team Legalhold Whitelisted"]
                                                                  Bool))))))
                                     :<|> (("teams"
                                            :> (Capture "tid" TeamId
                                                :> (Named
                                                      "get-team-internal"
                                                      (CanThrow 'TeamNotFound
                                                       :> Get '[JSON] TeamData)
                                                    :<|> (Named
                                                            "create-binding-team"
                                                            (ZUser
                                                             :> (ReqBody '[JSON] BindingNewTeam
                                                                 :> MultiVerb
                                                                      'PUT
                                                                      '[JSON]
                                                                      '[WithHeaders
                                                                          '[Header
                                                                              "Location" TeamId]
                                                                          TeamId
                                                                          (RespondEmpty 201 "OK")]
                                                                      TeamId))
                                                          :<|> (Named
                                                                  "delete-binding-team"
                                                                  (CanThrow 'NoBindingTeam
                                                                   :> (CanThrow 'NotAOneMemberTeam
                                                                       :> (CanThrow 'DeleteQueueFull
                                                                           :> (CanThrow
                                                                                 'TeamNotFound
                                                                               :> (QueryFlag "force"
                                                                                   :> MultiVerb
                                                                                        'DELETE
                                                                                        '[JSON]
                                                                                        '[RespondEmpty
                                                                                            202
                                                                                            "OK"]
                                                                                        ())))))
                                                                :<|> (Named
                                                                        "get-team-name"
                                                                        ("name"
                                                                         :> (CanThrow 'TeamNotFound
                                                                             :> Get
                                                                                  '[JSON] TeamName))
                                                                      :<|> (Named
                                                                              "update-team-status"
                                                                              ("status"
                                                                               :> (CanThrow
                                                                                     'TeamNotFound
                                                                                   :> (CanThrow
                                                                                         'InvalidTeamStatusUpdate
                                                                                       :> (ReqBody
                                                                                             '[JSON]
                                                                                             TeamStatusUpdate
                                                                                           :> MultiVerb
                                                                                                'PUT
                                                                                                '[JSON]
                                                                                                '[RespondEmpty
                                                                                                    200
                                                                                                    "OK"]
                                                                                                ()))))
                                                                            :<|> (("members"
                                                                                   :> (Named
                                                                                         "unchecked-add-team-member"
                                                                                         (CanThrow
                                                                                            'TooManyTeamMembers
                                                                                          :> (CanThrow
                                                                                                'TooManyTeamMembersOnTeamWithLegalhold
                                                                                              :> (CanThrow
                                                                                                    'TooManyTeamAdmins
                                                                                                  :> (ReqBody
                                                                                                        '[JSON]
                                                                                                        NewTeamMember
                                                                                                      :> MultiVerb
                                                                                                           'POST
                                                                                                           '[JSON]
                                                                                                           '[RespondEmpty
                                                                                                               200
                                                                                                               "OK"]
                                                                                                           ()))))
                                                                                       :<|> (Named
                                                                                               "unchecked-get-team-members"
                                                                                               (QueryParam'
                                                                                                  '[Strict]
                                                                                                  "maxResults"
                                                                                                  (Range
                                                                                                     1
                                                                                                     HardTruncationLimit
                                                                                                     Int32)
                                                                                                :> Get
                                                                                                     '[JSON]
                                                                                                     TeamMemberList)
                                                                                             :<|> (Named
                                                                                                     "unchecked-get-team-member"
                                                                                                     (Capture
                                                                                                        "uid"
                                                                                                        UserId
                                                                                                      :> (CanThrow
                                                                                                            'TeamMemberNotFound
                                                                                                          :> Get
                                                                                                               '[JSON]
                                                                                                               TeamMember))
                                                                                                   :<|> (Named
                                                                                                           "can-user-join-team"
                                                                                                           ("check"
                                                                                                            :> (CanThrow
                                                                                                                  'TooManyTeamMembersOnTeamWithLegalhold
                                                                                                                :> MultiVerb
                                                                                                                     'GET
                                                                                                                     '[JSON]
                                                                                                                     '[RespondEmpty
                                                                                                                         200
                                                                                                                         "User can join"]
                                                                                                                     ()))
                                                                                                         :<|> Named
                                                                                                                "unchecked-update-team-member"
                                                                                                                (CanThrow
                                                                                                                   'AccessDenied
                                                                                                                 :> (CanThrow
                                                                                                                       'InvalidPermissions
                                                                                                                     :> (CanThrow
                                                                                                                           'TeamNotFound
                                                                                                                         :> (CanThrow
                                                                                                                               'TeamMemberNotFound
                                                                                                                             :> (CanThrow
                                                                                                                                   'TooManyTeamAdmins
                                                                                                                                 :> (CanThrow
                                                                                                                                       'NotATeamMember
                                                                                                                                     :> (CanThrow
                                                                                                                                           OperationDenied
                                                                                                                                         :> (ReqBody
                                                                                                                                               '[JSON]
                                                                                                                                               NewTeamMember
                                                                                                                                             :> MultiVerb
                                                                                                                                                  'PUT
                                                                                                                                                  '[JSON]
                                                                                                                                                  '[RespondEmpty
                                                                                                                                                      200
                                                                                                                                                      ""]
                                                                                                                                                  ())))))))))))))
                                                                                  :<|> (Named
                                                                                          "user-is-team-owner"
                                                                                          ("is-team-owner"
                                                                                           :> (Capture
                                                                                                 "uid"
                                                                                                 UserId
                                                                                               :> (CanThrow
                                                                                                     'AccessDenied
                                                                                                   :> (CanThrow
                                                                                                         'TeamMemberNotFound
                                                                                                       :> (CanThrow
                                                                                                             'NotATeamMember
                                                                                                           :> MultiVerb
                                                                                                                'GET
                                                                                                                '[JSON]
                                                                                                                '[RespondEmpty
                                                                                                                    200
                                                                                                                    "User is team owner"]
                                                                                                                ())))))
                                                                                        :<|> ("search-visibility"
                                                                                              :> (Named
                                                                                                    "get-search-visibility-internal"
                                                                                                    (Get
                                                                                                       '[JSON]
                                                                                                       TeamSearchVisibilityView)
                                                                                                  :<|> Named
                                                                                                         "set-search-visibility-internal"
                                                                                                         (CanThrow
                                                                                                            'TeamSearchVisibilityNotEnabled
                                                                                                          :> (CanThrow
                                                                                                                OperationDenied
                                                                                                              :> (CanThrow
                                                                                                                    'NotATeamMember
                                                                                                                  :> (CanThrow
                                                                                                                        'TeamNotFound
                                                                                                                      :> (ReqBody
                                                                                                                            '[JSON]
                                                                                                                            TeamSearchVisibilityView
                                                                                                                          :> MultiVerb
                                                                                                                               'PUT
                                                                                                                               '[JSON]
                                                                                                                               '[RespondEmpty
                                                                                                                                   204
                                                                                                                                   "OK"]
                                                                                                                               ()))))))))))))))))
                                           :<|> ((Named
                                                    "get-team-members"
                                                    (CanThrow 'NonBindingTeam
                                                     :> (CanThrow 'TeamNotFound
                                                         :> ("users"
                                                             :> (Capture "uid" UserId
                                                                 :> ("team"
                                                                     :> ("members"
                                                                         :> Get
                                                                              '[JSON]
                                                                              TeamMemberList))))))
                                                  :<|> (Named
                                                          "get-team-id"
                                                          (CanThrow 'NonBindingTeam
                                                           :> (CanThrow 'TeamNotFound
                                                               :> ("users"
                                                                   :> (Capture "uid" UserId
                                                                       :> ("team"
                                                                           :> Get
                                                                                '[JSON] TeamId)))))
                                                        :<|> (Named
                                                                "test-get-clients"
                                                                ("test"
                                                                 :> ("clients"
                                                                     :> (ZUser
                                                                         :> Get
                                                                              '[JSON] [ClientId])))
                                                              :<|> (Named
                                                                      "test-add-client"
                                                                      ("clients"
                                                                       :> (ZUser
                                                                           :> (Capture
                                                                                 "cid" ClientId
                                                                               :> MultiVerb
                                                                                    'POST
                                                                                    '[JSON]
                                                                                    '[RespondEmpty
                                                                                        200 "OK"]
                                                                                    ())))
                                                                    :<|> (Named
                                                                            "test-delete-client"
                                                                            ("clients"
                                                                             :> (ZUser
                                                                                 :> (Capture
                                                                                       "cid"
                                                                                       ClientId
                                                                                     :> MultiVerb
                                                                                          'DELETE
                                                                                          '[JSON]
                                                                                          '[RespondEmpty
                                                                                              200
                                                                                              "OK"]
                                                                                          ())))
                                                                          :<|> (Named
                                                                                  "add-service"
                                                                                  ("services"
                                                                                   :> (ReqBody
                                                                                         '[JSON]
                                                                                         Service
                                                                                       :> MultiVerb
                                                                                            'POST
                                                                                            '[JSON]
                                                                                            '[RespondEmpty
                                                                                                200
                                                                                                "OK"]
                                                                                            ()))
                                                                                :<|> (Named
                                                                                        "delete-service"
                                                                                        ("services"
                                                                                         :> (ReqBody
                                                                                               '[JSON]
                                                                                               ServiceRef
                                                                                             :> MultiVerb
                                                                                                  'DELETE
                                                                                                  '[JSON]
                                                                                                  '[RespondEmpty
                                                                                                      200
                                                                                                      "OK"]
                                                                                                  ()))
                                                                                      :<|> (Named
                                                                                              "i-add-bot"
                                                                                              (CanThrow
                                                                                                 ('ActionDenied
                                                                                                    'AddConversationMember)
                                                                                               :> (CanThrow
                                                                                                     'ConvNotFound
                                                                                                   :> (CanThrow
                                                                                                         'InvalidOperation
                                                                                                       :> (CanThrow
                                                                                                             'TooManyMembers
                                                                                                           :> ("bots"
                                                                                                               :> (ZLocalUser
                                                                                                                   :> (ZConn
                                                                                                                       :> (ReqBody
                                                                                                                             '[JSON]
                                                                                                                             AddBot
                                                                                                                           :> Post
                                                                                                                                '[JSON]
                                                                                                                                Event))))))))
                                                                                            :<|> (Named
                                                                                                    "delete-bot"
                                                                                                    (CanThrow
                                                                                                       'ConvNotFound
                                                                                                     :> (CanThrow
                                                                                                           ('ActionDenied
                                                                                                              'RemoveConversationMember)
                                                                                                         :> ("bots"
                                                                                                             :> (ZLocalUser
                                                                                                                 :> (ZOptConn
                                                                                                                     :> (ReqBody
                                                                                                                           '[JSON]
                                                                                                                           RemoveBot
                                                                                                                         :> MultiVerb
                                                                                                                              'DELETE
                                                                                                                              '[JSON]
                                                                                                                              (UpdateResponses
                                                                                                                                 "Bot not found"
                                                                                                                                 "Bot deleted"
                                                                                                                                 Event)
                                                                                                                              (UpdateResult
                                                                                                                                 Event)))))))
                                                                                                  :<|> (Named
                                                                                                          "put-custom-backend"
                                                                                                          ("custom-backend"
                                                                                                           :> ("by-domain"
                                                                                                               :> (Capture
                                                                                                                     "domain"
                                                                                                                     Domain
                                                                                                                   :> (ReqBody
                                                                                                                         '[JSON]
                                                                                                                         CustomBackend
                                                                                                                       :> MultiVerb
                                                                                                                            'PUT
                                                                                                                            '[JSON]
                                                                                                                            '[RespondEmpty
                                                                                                                                201
                                                                                                                                "OK"]
                                                                                                                            ()))))
                                                                                                        :<|> Named
                                                                                                               "delete-custom-backend"
                                                                                                               ("custom-backend"
                                                                                                                :> ("by-domain"
                                                                                                                    :> (Capture
                                                                                                                          "domain"
                                                                                                                          Domain
                                                                                                                        :> MultiVerb
                                                                                                                             'DELETE
                                                                                                                             '[JSON]
                                                                                                                             '[RespondEmpty
                                                                                                                                 200
                                                                                                                                 "OK"]
                                                                                                                             ())))))))))))))
                                                 :<|> (Named
                                                         "upsert-one2one"
                                                         (Summary
                                                            "Create or Update a connect or one2one conversation."
                                                          :> ("conversations"
                                                              :> ("one2one"
                                                                  :> ("upsert"
                                                                      :> (ReqBody
                                                                            '[JSON]
                                                                            UpsertOne2OneConversationRequest
                                                                          :> MultiVerb
                                                                               'POST
                                                                               '[JSON]
                                                                               '[RespondEmpty
                                                                                   200
                                                                                   "Upsert One2One Policy"]
                                                                               ())))))
                                                       :<|> ((((Named
                                                                  '("iget", LegalholdConfig)
                                                                  (Description ""
                                                                   :> (Summary
                                                                         "Get config for legalhold"
                                                                       :> (CanThrow OperationDenied
                                                                           :> (CanThrow
                                                                                 'NotATeamMember
                                                                               :> (CanThrow
                                                                                     'TeamNotFound
                                                                                   :> ("teams"
                                                                                       :> (Capture
                                                                                             "tid"
                                                                                             TeamId
                                                                                           :> ("features"
                                                                                               :> ("legalhold"
                                                                                                   :> Get
                                                                                                        '[JSON]
                                                                                                        (LockableFeature
                                                                                                           LegalholdConfig))))))))))
                                                                :<|> (Named
                                                                        '("iput", LegalholdConfig)
                                                                        (Description ""
                                                                         :> (Summary
                                                                               "Put config for legalhold"
                                                                             :> (CanThrow
                                                                                   OperationDenied
                                                                                 :> (CanThrow
                                                                                       'NotATeamMember
                                                                                     :> (CanThrow
                                                                                           'TeamNotFound
                                                                                         :> (CanThrow
                                                                                               TeamFeatureError
                                                                                             :> (CanThrowMany
                                                                                                   '[ 'ActionDenied
                                                                                                        'RemoveConversationMember,
                                                                                                      'CannotEnableLegalHoldServiceLargeTeam,
                                                                                                      'LegalHoldNotEnabled,
                                                                                                      'LegalHoldDisableUnimplemented,
                                                                                                      'LegalHoldServiceNotRegistered,
                                                                                                      'UserLegalHoldIllegalOperation,
                                                                                                      'LegalHoldCouldNotBlockConnections]
                                                                                                 :> ("teams"
                                                                                                     :> (Capture
                                                                                                           "tid"
                                                                                                           TeamId
                                                                                                         :> ("features"
                                                                                                             :> ("legalhold"
                                                                                                                 :> (ReqBody
                                                                                                                       '[JSON]
                                                                                                                       (Feature
                                                                                                                          LegalholdConfig)
                                                                                                                     :> Put
                                                                                                                          '[JSON]
                                                                                                                          (LockableFeature
                                                                                                                             LegalholdConfig)))))))))))))
                                                                      :<|> Named
                                                                             '("ipatch",
                                                                               LegalholdConfig)
                                                                             (Description ""
                                                                              :> (Summary
                                                                                    "Patch config for legalhold"
                                                                                  :> (CanThrow
                                                                                        OperationDenied
                                                                                      :> (CanThrow
                                                                                            'NotATeamMember
                                                                                          :> (CanThrow
                                                                                                'TeamNotFound
                                                                                              :> (CanThrow
                                                                                                    TeamFeatureError
                                                                                                  :> (CanThrowMany
                                                                                                        '[ 'ActionDenied
                                                                                                             'RemoveConversationMember,
                                                                                                           'CannotEnableLegalHoldServiceLargeTeam,
                                                                                                           'LegalHoldNotEnabled,
                                                                                                           'LegalHoldDisableUnimplemented,
                                                                                                           'LegalHoldServiceNotRegistered,
                                                                                                           'UserLegalHoldIllegalOperation,
                                                                                                           'LegalHoldCouldNotBlockConnections]
                                                                                                      :> ("teams"
                                                                                                          :> (Capture
                                                                                                                "tid"
                                                                                                                TeamId
                                                                                                              :> ("features"
                                                                                                                  :> ("legalhold"
                                                                                                                      :> (ReqBody
                                                                                                                            '[JSON]
                                                                                                                            (LockableFeaturePatch
                                                                                                                               LegalholdConfig)
                                                                                                                          :> Patch
                                                                                                                               '[JSON]
                                                                                                                               (LockableFeature
                                                                                                                                  LegalholdConfig)))))))))))))))
                                                               :<|> ((Named
                                                                        '("iget", SSOConfig)
                                                                        (Description ""
                                                                         :> (Summary
                                                                               "Get config for sso"
                                                                             :> (CanThrow
                                                                                   OperationDenied
                                                                                 :> (CanThrow
                                                                                       'NotATeamMember
                                                                                     :> (CanThrow
                                                                                           'TeamNotFound
                                                                                         :> ("teams"
                                                                                             :> (Capture
                                                                                                   "tid"
                                                                                                   TeamId
                                                                                                 :> ("features"
                                                                                                     :> ("sso"
                                                                                                         :> Get
                                                                                                              '[JSON]
                                                                                                              (LockableFeature
                                                                                                                 SSOConfig))))))))))
                                                                      :<|> (Named
                                                                              '("iput", SSOConfig)
                                                                              (Description ""
                                                                               :> (Summary
                                                                                     "Put config for sso"
                                                                                   :> (CanThrow
                                                                                         OperationDenied
                                                                                       :> (CanThrow
                                                                                             'NotATeamMember
                                                                                           :> (CanThrow
                                                                                                 'TeamNotFound
                                                                                               :> (CanThrow
                                                                                                     TeamFeatureError
                                                                                                   :> (CanThrowMany
                                                                                                         '[]
                                                                                                       :> ("teams"
                                                                                                           :> (Capture
                                                                                                                 "tid"
                                                                                                                 TeamId
                                                                                                               :> ("features"
                                                                                                                   :> ("sso"
                                                                                                                       :> (ReqBody
                                                                                                                             '[JSON]
                                                                                                                             (Feature
                                                                                                                                SSOConfig)
                                                                                                                           :> Put
                                                                                                                                '[JSON]
                                                                                                                                (LockableFeature
                                                                                                                                   SSOConfig)))))))))))))
                                                                            :<|> Named
                                                                                   '("ipatch",
                                                                                     SSOConfig)
                                                                                   (Description ""
                                                                                    :> (Summary
                                                                                          "Patch config for sso"
                                                                                        :> (CanThrow
                                                                                              OperationDenied
                                                                                            :> (CanThrow
                                                                                                  'NotATeamMember
                                                                                                :> (CanThrow
                                                                                                      'TeamNotFound
                                                                                                    :> (CanThrow
                                                                                                          TeamFeatureError
                                                                                                        :> (CanThrowMany
                                                                                                              '[]
                                                                                                            :> ("teams"
                                                                                                                :> (Capture
                                                                                                                      "tid"
                                                                                                                      TeamId
                                                                                                                    :> ("features"
                                                                                                                        :> ("sso"
                                                                                                                            :> (ReqBody
                                                                                                                                  '[JSON]
                                                                                                                                  (LockableFeaturePatch
                                                                                                                                     SSOConfig)
                                                                                                                                :> Patch
                                                                                                                                     '[JSON]
                                                                                                                                     (LockableFeature
                                                                                                                                        SSOConfig)))))))))))))))
                                                                     :<|> ((Named
                                                                              '("iget",
                                                                                SearchVisibilityAvailableConfig)
                                                                              (Description ""
                                                                               :> (Summary
                                                                                     "Get config for searchVisibility"
                                                                                   :> (CanThrow
                                                                                         OperationDenied
                                                                                       :> (CanThrow
                                                                                             'NotATeamMember
                                                                                           :> (CanThrow
                                                                                                 'TeamNotFound
                                                                                               :> ("teams"
                                                                                                   :> (Capture
                                                                                                         "tid"
                                                                                                         TeamId
                                                                                                       :> ("features"
                                                                                                           :> ("searchVisibility"
                                                                                                               :> Get
                                                                                                                    '[JSON]
                                                                                                                    (LockableFeature
                                                                                                                       SearchVisibilityAvailableConfig))))))))))
                                                                            :<|> (Named
                                                                                    '("iput",
                                                                                      SearchVisibilityAvailableConfig)
                                                                                    (Description ""
                                                                                     :> (Summary
                                                                                           "Put config for searchVisibility"
                                                                                         :> (CanThrow
                                                                                               OperationDenied
                                                                                             :> (CanThrow
                                                                                                   'NotATeamMember
                                                                                                 :> (CanThrow
                                                                                                       'TeamNotFound
                                                                                                     :> (CanThrow
                                                                                                           TeamFeatureError
                                                                                                         :> (CanThrowMany
                                                                                                               '[]
                                                                                                             :> ("teams"
                                                                                                                 :> (Capture
                                                                                                                       "tid"
                                                                                                                       TeamId
                                                                                                                     :> ("features"
                                                                                                                         :> ("searchVisibility"
                                                                                                                             :> (ReqBody
                                                                                                                                   '[JSON]
                                                                                                                                   (Feature
                                                                                                                                      SearchVisibilityAvailableConfig)
                                                                                                                                 :> Put
                                                                                                                                      '[JSON]
                                                                                                                                      (LockableFeature
                                                                                                                                         SearchVisibilityAvailableConfig)))))))))))))
                                                                                  :<|> Named
                                                                                         '("ipatch",
                                                                                           SearchVisibilityAvailableConfig)
                                                                                         (Description
                                                                                            ""
                                                                                          :> (Summary
                                                                                                "Patch config for searchVisibility"
                                                                                              :> (CanThrow
                                                                                                    OperationDenied
                                                                                                  :> (CanThrow
                                                                                                        'NotATeamMember
                                                                                                      :> (CanThrow
                                                                                                            'TeamNotFound
                                                                                                          :> (CanThrow
                                                                                                                TeamFeatureError
                                                                                                              :> (CanThrowMany
                                                                                                                    '[]
                                                                                                                  :> ("teams"
                                                                                                                      :> (Capture
                                                                                                                            "tid"
                                                                                                                            TeamId
                                                                                                                          :> ("features"
                                                                                                                              :> ("searchVisibility"
                                                                                                                                  :> (ReqBody
                                                                                                                                        '[JSON]
                                                                                                                                        (LockableFeaturePatch
                                                                                                                                           SearchVisibilityAvailableConfig)
                                                                                                                                      :> Patch
                                                                                                                                           '[JSON]
                                                                                                                                           (LockableFeature
                                                                                                                                              SearchVisibilityAvailableConfig)))))))))))))))
                                                                           :<|> ((Named
                                                                                    '("iget",
                                                                                      SearchVisibilityInboundConfig)
                                                                                    (Description ""
                                                                                     :> (Summary
                                                                                           "Get config for searchVisibilityInbound"
                                                                                         :> (CanThrow
                                                                                               OperationDenied
                                                                                             :> (CanThrow
                                                                                                   'NotATeamMember
                                                                                                 :> (CanThrow
                                                                                                       'TeamNotFound
                                                                                                     :> ("teams"
                                                                                                         :> (Capture
                                                                                                               "tid"
                                                                                                               TeamId
                                                                                                             :> ("features"
                                                                                                                 :> ("searchVisibilityInbound"
                                                                                                                     :> Get
                                                                                                                          '[JSON]
                                                                                                                          (LockableFeature
                                                                                                                             SearchVisibilityInboundConfig))))))))))
                                                                                  :<|> (Named
                                                                                          '("iput",
                                                                                            SearchVisibilityInboundConfig)
                                                                                          (Description
                                                                                             ""
                                                                                           :> (Summary
                                                                                                 "Put config for searchVisibilityInbound"
                                                                                               :> (CanThrow
                                                                                                     OperationDenied
                                                                                                   :> (CanThrow
                                                                                                         'NotATeamMember
                                                                                                       :> (CanThrow
                                                                                                             'TeamNotFound
                                                                                                           :> (CanThrow
                                                                                                                 TeamFeatureError
                                                                                                               :> (CanThrowMany
                                                                                                                     '[]
                                                                                                                   :> ("teams"
                                                                                                                       :> (Capture
                                                                                                                             "tid"
                                                                                                                             TeamId
                                                                                                                           :> ("features"
                                                                                                                               :> ("searchVisibilityInbound"
                                                                                                                                   :> (ReqBody
                                                                                                                                         '[JSON]
                                                                                                                                         (Feature
                                                                                                                                            SearchVisibilityInboundConfig)
                                                                                                                                       :> Put
                                                                                                                                            '[JSON]
                                                                                                                                            (LockableFeature
                                                                                                                                               SearchVisibilityInboundConfig)))))))))))))
                                                                                        :<|> Named
                                                                                               '("ipatch",
                                                                                                 SearchVisibilityInboundConfig)
                                                                                               (Description
                                                                                                  ""
                                                                                                :> (Summary
                                                                                                      "Patch config for searchVisibilityInbound"
                                                                                                    :> (CanThrow
                                                                                                          OperationDenied
                                                                                                        :> (CanThrow
                                                                                                              'NotATeamMember
                                                                                                            :> (CanThrow
                                                                                                                  'TeamNotFound
                                                                                                                :> (CanThrow
                                                                                                                      TeamFeatureError
                                                                                                                    :> (CanThrowMany
                                                                                                                          '[]
                                                                                                                        :> ("teams"
                                                                                                                            :> (Capture
                                                                                                                                  "tid"
                                                                                                                                  TeamId
                                                                                                                                :> ("features"
                                                                                                                                    :> ("searchVisibilityInbound"
                                                                                                                                        :> (ReqBody
                                                                                                                                              '[JSON]
                                                                                                                                              (LockableFeaturePatch
                                                                                                                                                 SearchVisibilityInboundConfig)
                                                                                                                                            :> Patch
                                                                                                                                                 '[JSON]
                                                                                                                                                 (LockableFeature
                                                                                                                                                    SearchVisibilityInboundConfig)))))))))))))))
                                                                                 :<|> ((Named
                                                                                          '("iget",
                                                                                            ValidateSAMLEmailsConfig)
                                                                                          (Description
                                                                                             ""
                                                                                           :> (Summary
                                                                                                 "Get config for validateSAMLemails"
                                                                                               :> (CanThrow
                                                                                                     OperationDenied
                                                                                                   :> (CanThrow
                                                                                                         'NotATeamMember
                                                                                                       :> (CanThrow
                                                                                                             'TeamNotFound
                                                                                                           :> ("teams"
                                                                                                               :> (Capture
                                                                                                                     "tid"
                                                                                                                     TeamId
                                                                                                                   :> ("features"
                                                                                                                       :> ("validateSAMLemails"
                                                                                                                           :> Get
                                                                                                                                '[JSON]
                                                                                                                                (LockableFeature
                                                                                                                                   ValidateSAMLEmailsConfig))))))))))
                                                                                        :<|> (Named
                                                                                                '("iput",
                                                                                                  ValidateSAMLEmailsConfig)
                                                                                                (Description
                                                                                                   ""
                                                                                                 :> (Summary
                                                                                                       "Put config for validateSAMLemails"
                                                                                                     :> (CanThrow
                                                                                                           OperationDenied
                                                                                                         :> (CanThrow
                                                                                                               'NotATeamMember
                                                                                                             :> (CanThrow
                                                                                                                   'TeamNotFound
                                                                                                                 :> (CanThrow
                                                                                                                       TeamFeatureError
                                                                                                                     :> (CanThrowMany
                                                                                                                           '[]
                                                                                                                         :> ("teams"
                                                                                                                             :> (Capture
                                                                                                                                   "tid"
                                                                                                                                   TeamId
                                                                                                                                 :> ("features"
                                                                                                                                     :> ("validateSAMLemails"
                                                                                                                                         :> (ReqBody
                                                                                                                                               '[JSON]
                                                                                                                                               (Feature
                                                                                                                                                  ValidateSAMLEmailsConfig)
                                                                                                                                             :> Put
                                                                                                                                                  '[JSON]
                                                                                                                                                  (LockableFeature
                                                                                                                                                     ValidateSAMLEmailsConfig)))))))))))))
                                                                                              :<|> Named
                                                                                                     '("ipatch",
                                                                                                       ValidateSAMLEmailsConfig)
                                                                                                     (Description
                                                                                                        ""
                                                                                                      :> (Summary
                                                                                                            "Patch config for validateSAMLemails"
                                                                                                          :> (CanThrow
                                                                                                                OperationDenied
                                                                                                              :> (CanThrow
                                                                                                                    'NotATeamMember
                                                                                                                  :> (CanThrow
                                                                                                                        'TeamNotFound
                                                                                                                      :> (CanThrow
                                                                                                                            TeamFeatureError
                                                                                                                          :> (CanThrowMany
                                                                                                                                '[]
                                                                                                                              :> ("teams"
                                                                                                                                  :> (Capture
                                                                                                                                        "tid"
                                                                                                                                        TeamId
                                                                                                                                      :> ("features"
                                                                                                                                          :> ("validateSAMLemails"
                                                                                                                                              :> (ReqBody
                                                                                                                                                    '[JSON]
                                                                                                                                                    (LockableFeaturePatch
                                                                                                                                                       ValidateSAMLEmailsConfig)
                                                                                                                                                  :> Patch
                                                                                                                                                       '[JSON]
                                                                                                                                                       (LockableFeature
                                                                                                                                                          ValidateSAMLEmailsConfig)))))))))))))))
                                                                                       :<|> ((Named
                                                                                                '("iget",
                                                                                                  DigitalSignaturesConfig)
                                                                                                (Description
                                                                                                   ""
                                                                                                 :> (Summary
                                                                                                       "Get config for digitalSignatures"
                                                                                                     :> (CanThrow
                                                                                                           OperationDenied
                                                                                                         :> (CanThrow
                                                                                                               'NotATeamMember
                                                                                                             :> (CanThrow
                                                                                                                   'TeamNotFound
                                                                                                                 :> ("teams"
                                                                                                                     :> (Capture
                                                                                                                           "tid"
                                                                                                                           TeamId
                                                                                                                         :> ("features"
                                                                                                                             :> ("digitalSignatures"
                                                                                                                                 :> Get
                                                                                                                                      '[JSON]
                                                                                                                                      (LockableFeature
                                                                                                                                         DigitalSignaturesConfig))))))))))
                                                                                              :<|> (Named
                                                                                                      '("iput",
                                                                                                        DigitalSignaturesConfig)
                                                                                                      (Description
                                                                                                         ""
                                                                                                       :> (Summary
                                                                                                             "Put config for digitalSignatures"
                                                                                                           :> (CanThrow
                                                                                                                 OperationDenied
                                                                                                               :> (CanThrow
                                                                                                                     'NotATeamMember
                                                                                                                   :> (CanThrow
                                                                                                                         'TeamNotFound
                                                                                                                       :> (CanThrow
                                                                                                                             TeamFeatureError
                                                                                                                           :> (CanThrowMany
                                                                                                                                 '[]
                                                                                                                               :> ("teams"
                                                                                                                                   :> (Capture
                                                                                                                                         "tid"
                                                                                                                                         TeamId
                                                                                                                                       :> ("features"
                                                                                                                                           :> ("digitalSignatures"
                                                                                                                                               :> (ReqBody
                                                                                                                                                     '[JSON]
                                                                                                                                                     (Feature
                                                                                                                                                        DigitalSignaturesConfig)
                                                                                                                                                   :> Put
                                                                                                                                                        '[JSON]
                                                                                                                                                        (LockableFeature
                                                                                                                                                           DigitalSignaturesConfig)))))))))))))
                                                                                                    :<|> Named
                                                                                                           '("ipatch",
                                                                                                             DigitalSignaturesConfig)
                                                                                                           (Description
                                                                                                              ""
                                                                                                            :> (Summary
                                                                                                                  "Patch config for digitalSignatures"
                                                                                                                :> (CanThrow
                                                                                                                      OperationDenied
                                                                                                                    :> (CanThrow
                                                                                                                          'NotATeamMember
                                                                                                                        :> (CanThrow
                                                                                                                              'TeamNotFound
                                                                                                                            :> (CanThrow
                                                                                                                                  TeamFeatureError
                                                                                                                                :> (CanThrowMany
                                                                                                                                      '[]
                                                                                                                                    :> ("teams"
                                                                                                                                        :> (Capture
                                                                                                                                              "tid"
                                                                                                                                              TeamId
                                                                                                                                            :> ("features"
                                                                                                                                                :> ("digitalSignatures"
                                                                                                                                                    :> (ReqBody
                                                                                                                                                          '[JSON]
                                                                                                                                                          (LockableFeaturePatch
                                                                                                                                                             DigitalSignaturesConfig)
                                                                                                                                                        :> Patch
                                                                                                                                                             '[JSON]
                                                                                                                                                             (LockableFeature
                                                                                                                                                                DigitalSignaturesConfig)))))))))))))))
                                                                                             :<|> ((Named
                                                                                                      '("iget",
                                                                                                        AppLockConfig)
                                                                                                      (Description
                                                                                                         ""
                                                                                                       :> (Summary
                                                                                                             "Get config for appLock"
                                                                                                           :> (CanThrow
                                                                                                                 OperationDenied
                                                                                                               :> (CanThrow
                                                                                                                     'NotATeamMember
                                                                                                                   :> (CanThrow
                                                                                                                         'TeamNotFound
                                                                                                                       :> ("teams"
                                                                                                                           :> (Capture
                                                                                                                                 "tid"
                                                                                                                                 TeamId
                                                                                                                               :> ("features"
                                                                                                                                   :> ("appLock"
                                                                                                                                       :> Get
                                                                                                                                            '[JSON]
                                                                                                                                            (LockableFeature
                                                                                                                                               AppLockConfig))))))))))
                                                                                                    :<|> (Named
                                                                                                            '("iput",
                                                                                                              AppLockConfig)
                                                                                                            (Description
                                                                                                               ""
                                                                                                             :> (Summary
                                                                                                                   "Put config for appLock"
                                                                                                                 :> (CanThrow
                                                                                                                       OperationDenied
                                                                                                                     :> (CanThrow
                                                                                                                           'NotATeamMember
                                                                                                                         :> (CanThrow
                                                                                                                               'TeamNotFound
                                                                                                                             :> (CanThrow
                                                                                                                                   TeamFeatureError
                                                                                                                                 :> (CanThrowMany
                                                                                                                                       '[]
                                                                                                                                     :> ("teams"
                                                                                                                                         :> (Capture
                                                                                                                                               "tid"
                                                                                                                                               TeamId
                                                                                                                                             :> ("features"
                                                                                                                                                 :> ("appLock"
                                                                                                                                                     :> (ReqBody
                                                                                                                                                           '[JSON]
                                                                                                                                                           (Feature
                                                                                                                                                              AppLockConfig)
                                                                                                                                                         :> Put
                                                                                                                                                              '[JSON]
                                                                                                                                                              (LockableFeature
                                                                                                                                                                 AppLockConfig)))))))))))))
                                                                                                          :<|> Named
                                                                                                                 '("ipatch",
                                                                                                                   AppLockConfig)
                                                                                                                 (Description
                                                                                                                    ""
                                                                                                                  :> (Summary
                                                                                                                        "Patch config for appLock"
                                                                                                                      :> (CanThrow
                                                                                                                            OperationDenied
                                                                                                                          :> (CanThrow
                                                                                                                                'NotATeamMember
                                                                                                                              :> (CanThrow
                                                                                                                                    'TeamNotFound
                                                                                                                                  :> (CanThrow
                                                                                                                                        TeamFeatureError
                                                                                                                                      :> (CanThrowMany
                                                                                                                                            '[]
                                                                                                                                          :> ("teams"
                                                                                                                                              :> (Capture
                                                                                                                                                    "tid"
                                                                                                                                                    TeamId
                                                                                                                                                  :> ("features"
                                                                                                                                                      :> ("appLock"
                                                                                                                                                          :> (ReqBody
                                                                                                                                                                '[JSON]
                                                                                                                                                                (LockableFeaturePatch
                                                                                                                                                                   AppLockConfig)
                                                                                                                                                              :> Patch
                                                                                                                                                                   '[JSON]
                                                                                                                                                                   (LockableFeature
                                                                                                                                                                      AppLockConfig)))))))))))))))
                                                                                                   :<|> ((Named
                                                                                                            '("iget",
                                                                                                              FileSharingConfig)
                                                                                                            (Description
                                                                                                               ""
                                                                                                             :> (Summary
                                                                                                                   "Get config for fileSharing"
                                                                                                                 :> (CanThrow
                                                                                                                       OperationDenied
                                                                                                                     :> (CanThrow
                                                                                                                           'NotATeamMember
                                                                                                                         :> (CanThrow
                                                                                                                               'TeamNotFound
                                                                                                                             :> ("teams"
                                                                                                                                 :> (Capture
                                                                                                                                       "tid"
                                                                                                                                       TeamId
                                                                                                                                     :> ("features"
                                                                                                                                         :> ("fileSharing"
                                                                                                                                             :> Get
                                                                                                                                                  '[JSON]
                                                                                                                                                  (LockableFeature
                                                                                                                                                     FileSharingConfig))))))))))
                                                                                                          :<|> (Named
                                                                                                                  '("iput",
                                                                                                                    FileSharingConfig)
                                                                                                                  (Description
                                                                                                                     ""
                                                                                                                   :> (Summary
                                                                                                                         "Put config for fileSharing"
                                                                                                                       :> (CanThrow
                                                                                                                             OperationDenied
                                                                                                                           :> (CanThrow
                                                                                                                                 'NotATeamMember
                                                                                                                               :> (CanThrow
                                                                                                                                     'TeamNotFound
                                                                                                                                   :> (CanThrow
                                                                                                                                         TeamFeatureError
                                                                                                                                       :> (CanThrowMany
                                                                                                                                             '[]
                                                                                                                                           :> ("teams"
                                                                                                                                               :> (Capture
                                                                                                                                                     "tid"
                                                                                                                                                     TeamId
                                                                                                                                                   :> ("features"
                                                                                                                                                       :> ("fileSharing"
                                                                                                                                                           :> (ReqBody
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 (Feature
                                                                                                                                                                    FileSharingConfig)
                                                                                                                                                               :> Put
                                                                                                                                                                    '[JSON]
                                                                                                                                                                    (LockableFeature
                                                                                                                                                                       FileSharingConfig)))))))))))))
                                                                                                                :<|> Named
                                                                                                                       '("ipatch",
                                                                                                                         FileSharingConfig)
                                                                                                                       (Description
                                                                                                                          ""
                                                                                                                        :> (Summary
                                                                                                                              "Patch config for fileSharing"
                                                                                                                            :> (CanThrow
                                                                                                                                  OperationDenied
                                                                                                                                :> (CanThrow
                                                                                                                                      'NotATeamMember
                                                                                                                                    :> (CanThrow
                                                                                                                                          'TeamNotFound
                                                                                                                                        :> (CanThrow
                                                                                                                                              TeamFeatureError
                                                                                                                                            :> (CanThrowMany
                                                                                                                                                  '[]
                                                                                                                                                :> ("teams"
                                                                                                                                                    :> (Capture
                                                                                                                                                          "tid"
                                                                                                                                                          TeamId
                                                                                                                                                        :> ("features"
                                                                                                                                                            :> ("fileSharing"
                                                                                                                                                                :> (ReqBody
                                                                                                                                                                      '[JSON]
                                                                                                                                                                      (LockableFeaturePatch
                                                                                                                                                                         FileSharingConfig)
                                                                                                                                                                    :> Patch
                                                                                                                                                                         '[JSON]
                                                                                                                                                                         (LockableFeature
                                                                                                                                                                            FileSharingConfig)))))))))))))))
                                                                                                         :<|> (Named
                                                                                                                 '("iget",
                                                                                                                   ClassifiedDomainsConfig)
                                                                                                                 (Description
                                                                                                                    ""
                                                                                                                  :> (Summary
                                                                                                                        "Get config for classifiedDomains"
                                                                                                                      :> (CanThrow
                                                                                                                            OperationDenied
                                                                                                                          :> (CanThrow
                                                                                                                                'NotATeamMember
                                                                                                                              :> (CanThrow
                                                                                                                                    'TeamNotFound
                                                                                                                                  :> ("teams"
                                                                                                                                      :> (Capture
                                                                                                                                            "tid"
                                                                                                                                            TeamId
                                                                                                                                          :> ("features"
                                                                                                                                              :> ("classifiedDomains"
                                                                                                                                                  :> Get
                                                                                                                                                       '[JSON]
                                                                                                                                                       (LockableFeature
                                                                                                                                                          ClassifiedDomainsConfig))))))))))
                                                                                                               :<|> ((Named
                                                                                                                        '("iget",
                                                                                                                          ConferenceCallingConfig)
                                                                                                                        (Description
                                                                                                                           ""
                                                                                                                         :> (Summary
                                                                                                                               "Get config for conferenceCalling"
                                                                                                                             :> (CanThrow
                                                                                                                                   OperationDenied
                                                                                                                                 :> (CanThrow
                                                                                                                                       'NotATeamMember
                                                                                                                                     :> (CanThrow
                                                                                                                                           'TeamNotFound
                                                                                                                                         :> ("teams"
                                                                                                                                             :> (Capture
                                                                                                                                                   "tid"
                                                                                                                                                   TeamId
                                                                                                                                                 :> ("features"
                                                                                                                                                     :> ("conferenceCalling"
                                                                                                                                                         :> Get
                                                                                                                                                              '[JSON]
                                                                                                                                                              (LockableFeature
                                                                                                                                                                 ConferenceCallingConfig))))))))))
                                                                                                                      :<|> (Named
                                                                                                                              '("iput",
                                                                                                                                ConferenceCallingConfig)
                                                                                                                              (Description
                                                                                                                                 ""
                                                                                                                               :> (Summary
                                                                                                                                     "Put config for conferenceCalling"
                                                                                                                                   :> (CanThrow
                                                                                                                                         OperationDenied
                                                                                                                                       :> (CanThrow
                                                                                                                                             'NotATeamMember
                                                                                                                                           :> (CanThrow
                                                                                                                                                 'TeamNotFound
                                                                                                                                               :> (CanThrow
                                                                                                                                                     TeamFeatureError
                                                                                                                                                   :> (CanThrowMany
                                                                                                                                                         '[]
                                                                                                                                                       :> ("teams"
                                                                                                                                                           :> (Capture
                                                                                                                                                                 "tid"
                                                                                                                                                                 TeamId
                                                                                                                                                               :> ("features"
                                                                                                                                                                   :> ("conferenceCalling"
                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                             '[JSON]
                                                                                                                                                                             (Feature
                                                                                                                                                                                ConferenceCallingConfig)
                                                                                                                                                                           :> Put
                                                                                                                                                                                '[JSON]
                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                   ConferenceCallingConfig)))))))))))))
                                                                                                                            :<|> Named
                                                                                                                                   '("ipatch",
                                                                                                                                     ConferenceCallingConfig)
                                                                                                                                   (Description
                                                                                                                                      ""
                                                                                                                                    :> (Summary
                                                                                                                                          "Patch config for conferenceCalling"
                                                                                                                                        :> (CanThrow
                                                                                                                                              OperationDenied
                                                                                                                                            :> (CanThrow
                                                                                                                                                  'NotATeamMember
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'TeamNotFound
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          TeamFeatureError
                                                                                                                                                        :> (CanThrowMany
                                                                                                                                                              '[]
                                                                                                                                                            :> ("teams"
                                                                                                                                                                :> (Capture
                                                                                                                                                                      "tid"
                                                                                                                                                                      TeamId
                                                                                                                                                                    :> ("features"
                                                                                                                                                                        :> ("conferenceCalling"
                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                  (LockableFeaturePatch
                                                                                                                                                                                     ConferenceCallingConfig)
                                                                                                                                                                                :> Patch
                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                        ConferenceCallingConfig)))))))))))))))
                                                                                                                     :<|> ((Named
                                                                                                                              '("iget",
                                                                                                                                SelfDeletingMessagesConfig)
                                                                                                                              (Description
                                                                                                                                 ""
                                                                                                                               :> (Summary
                                                                                                                                     "Get config for selfDeletingMessages"
                                                                                                                                   :> (CanThrow
                                                                                                                                         OperationDenied
                                                                                                                                       :> (CanThrow
                                                                                                                                             'NotATeamMember
                                                                                                                                           :> (CanThrow
                                                                                                                                                 'TeamNotFound
                                                                                                                                               :> ("teams"
                                                                                                                                                   :> (Capture
                                                                                                                                                         "tid"
                                                                                                                                                         TeamId
                                                                                                                                                       :> ("features"
                                                                                                                                                           :> ("selfDeletingMessages"
                                                                                                                                                               :> Get
                                                                                                                                                                    '[JSON]
                                                                                                                                                                    (LockableFeature
                                                                                                                                                                       SelfDeletingMessagesConfig))))))))))
                                                                                                                            :<|> (Named
                                                                                                                                    '("iput",
                                                                                                                                      SelfDeletingMessagesConfig)
                                                                                                                                    (Description
                                                                                                                                       ""
                                                                                                                                     :> (Summary
                                                                                                                                           "Put config for selfDeletingMessages"
                                                                                                                                         :> (CanThrow
                                                                                                                                               OperationDenied
                                                                                                                                             :> (CanThrow
                                                                                                                                                   'NotATeamMember
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'TeamNotFound
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           TeamFeatureError
                                                                                                                                                         :> (CanThrowMany
                                                                                                                                                               '[]
                                                                                                                                                             :> ("teams"
                                                                                                                                                                 :> (Capture
                                                                                                                                                                       "tid"
                                                                                                                                                                       TeamId
                                                                                                                                                                     :> ("features"
                                                                                                                                                                         :> ("selfDeletingMessages"
                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                   (Feature
                                                                                                                                                                                      SelfDeletingMessagesConfig)
                                                                                                                                                                                 :> Put
                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                         SelfDeletingMessagesConfig)))))))))))))
                                                                                                                                  :<|> Named
                                                                                                                                         '("ipatch",
                                                                                                                                           SelfDeletingMessagesConfig)
                                                                                                                                         (Description
                                                                                                                                            ""
                                                                                                                                          :> (Summary
                                                                                                                                                "Patch config for selfDeletingMessages"
                                                                                                                                              :> (CanThrow
                                                                                                                                                    OperationDenied
                                                                                                                                                  :> (CanThrow
                                                                                                                                                        'NotATeamMember
                                                                                                                                                      :> (CanThrow
                                                                                                                                                            'TeamNotFound
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                TeamFeatureError
                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                    '[]
                                                                                                                                                                  :> ("teams"
                                                                                                                                                                      :> (Capture
                                                                                                                                                                            "tid"
                                                                                                                                                                            TeamId
                                                                                                                                                                          :> ("features"
                                                                                                                                                                              :> ("selfDeletingMessages"
                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                        (LockableFeaturePatch
                                                                                                                                                                                           SelfDeletingMessagesConfig)
                                                                                                                                                                                      :> Patch
                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                              SelfDeletingMessagesConfig)))))))))))))))
                                                                                                                           :<|> ((Named
                                                                                                                                    '("iget",
                                                                                                                                      GuestLinksConfig)
                                                                                                                                    (Description
                                                                                                                                       ""
                                                                                                                                     :> (Summary
                                                                                                                                           "Get config for conversationGuestLinks"
                                                                                                                                         :> (CanThrow
                                                                                                                                               OperationDenied
                                                                                                                                             :> (CanThrow
                                                                                                                                                   'NotATeamMember
                                                                                                                                                 :> (CanThrow
                                                                                                                                                       'TeamNotFound
                                                                                                                                                     :> ("teams"
                                                                                                                                                         :> (Capture
                                                                                                                                                               "tid"
                                                                                                                                                               TeamId
                                                                                                                                                             :> ("features"
                                                                                                                                                                 :> ("conversationGuestLinks"
                                                                                                                                                                     :> Get
                                                                                                                                                                          '[JSON]
                                                                                                                                                                          (LockableFeature
                                                                                                                                                                             GuestLinksConfig))))))))))
                                                                                                                                  :<|> (Named
                                                                                                                                          '("iput",
                                                                                                                                            GuestLinksConfig)
                                                                                                                                          (Description
                                                                                                                                             ""
                                                                                                                                           :> (Summary
                                                                                                                                                 "Put config for conversationGuestLinks"
                                                                                                                                               :> (CanThrow
                                                                                                                                                     OperationDenied
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'NotATeamMember
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'TeamNotFound
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 TeamFeatureError
                                                                                                                                                               :> (CanThrowMany
                                                                                                                                                                     '[]
                                                                                                                                                                   :> ("teams"
                                                                                                                                                                       :> (Capture
                                                                                                                                                                             "tid"
                                                                                                                                                                             TeamId
                                                                                                                                                                           :> ("features"
                                                                                                                                                                               :> ("conversationGuestLinks"
                                                                                                                                                                                   :> (ReqBody
                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                         (Feature
                                                                                                                                                                                            GuestLinksConfig)
                                                                                                                                                                                       :> Put
                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                               GuestLinksConfig)))))))))))))
                                                                                                                                        :<|> Named
                                                                                                                                               '("ipatch",
                                                                                                                                                 GuestLinksConfig)
                                                                                                                                               (Description
                                                                                                                                                  ""
                                                                                                                                                :> (Summary
                                                                                                                                                      "Patch config for conversationGuestLinks"
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          OperationDenied
                                                                                                                                                        :> (CanThrow
                                                                                                                                                              'NotATeamMember
                                                                                                                                                            :> (CanThrow
                                                                                                                                                                  'TeamNotFound
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      TeamFeatureError
                                                                                                                                                                    :> (CanThrowMany
                                                                                                                                                                          '[]
                                                                                                                                                                        :> ("teams"
                                                                                                                                                                            :> (Capture
                                                                                                                                                                                  "tid"
                                                                                                                                                                                  TeamId
                                                                                                                                                                                :> ("features"
                                                                                                                                                                                    :> ("conversationGuestLinks"
                                                                                                                                                                                        :> (ReqBody
                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                              (LockableFeaturePatch
                                                                                                                                                                                                 GuestLinksConfig)
                                                                                                                                                                                            :> Patch
                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                    GuestLinksConfig)))))))))))))))
                                                                                                                                 :<|> ((Named
                                                                                                                                          '("iget",
                                                                                                                                            SndFactorPasswordChallengeConfig)
                                                                                                                                          (Description
                                                                                                                                             ""
                                                                                                                                           :> (Summary
                                                                                                                                                 "Get config for sndFactorPasswordChallenge"
                                                                                                                                               :> (CanThrow
                                                                                                                                                     OperationDenied
                                                                                                                                                   :> (CanThrow
                                                                                                                                                         'NotATeamMember
                                                                                                                                                       :> (CanThrow
                                                                                                                                                             'TeamNotFound
                                                                                                                                                           :> ("teams"
                                                                                                                                                               :> (Capture
                                                                                                                                                                     "tid"
                                                                                                                                                                     TeamId
                                                                                                                                                                   :> ("features"
                                                                                                                                                                       :> ("sndFactorPasswordChallenge"
                                                                                                                                                                           :> Get
                                                                                                                                                                                '[JSON]
                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                   SndFactorPasswordChallengeConfig))))))))))
                                                                                                                                        :<|> (Named
                                                                                                                                                '("iput",
                                                                                                                                                  SndFactorPasswordChallengeConfig)
                                                                                                                                                (Description
                                                                                                                                                   ""
                                                                                                                                                 :> (Summary
                                                                                                                                                       "Put config for sndFactorPasswordChallenge"
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           OperationDenied
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'NotATeamMember
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       TeamFeatureError
                                                                                                                                                                     :> (CanThrowMany
                                                                                                                                                                           '[]
                                                                                                                                                                         :> ("teams"
                                                                                                                                                                             :> (Capture
                                                                                                                                                                                   "tid"
                                                                                                                                                                                   TeamId
                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                     :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                         :> (ReqBody
                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                               (Feature
                                                                                                                                                                                                  SndFactorPasswordChallengeConfig)
                                                                                                                                                                                             :> Put
                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                     SndFactorPasswordChallengeConfig)))))))))))))
                                                                                                                                              :<|> Named
                                                                                                                                                     '("ipatch",
                                                                                                                                                       SndFactorPasswordChallengeConfig)
                                                                                                                                                     (Description
                                                                                                                                                        ""
                                                                                                                                                      :> (Summary
                                                                                                                                                            "Patch config for sndFactorPasswordChallenge"
                                                                                                                                                          :> (CanThrow
                                                                                                                                                                OperationDenied
                                                                                                                                                              :> (CanThrow
                                                                                                                                                                    'NotATeamMember
                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                        'TeamNotFound
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            TeamFeatureError
                                                                                                                                                                          :> (CanThrowMany
                                                                                                                                                                                '[]
                                                                                                                                                                              :> ("teams"
                                                                                                                                                                                  :> (Capture
                                                                                                                                                                                        "tid"
                                                                                                                                                                                        TeamId
                                                                                                                                                                                      :> ("features"
                                                                                                                                                                                          :> ("sndFactorPasswordChallenge"
                                                                                                                                                                                              :> (ReqBody
                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                    (LockableFeaturePatch
                                                                                                                                                                                                       SndFactorPasswordChallengeConfig)
                                                                                                                                                                                                  :> Patch
                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                                          SndFactorPasswordChallengeConfig)))))))))))))))
                                                                                                                                       :<|> ((Named
                                                                                                                                                '("iget",
                                                                                                                                                  MLSConfig)
                                                                                                                                                (Description
                                                                                                                                                   ""
                                                                                                                                                 :> (Summary
                                                                                                                                                       "Get config for mls"
                                                                                                                                                     :> (CanThrow
                                                                                                                                                           OperationDenied
                                                                                                                                                         :> (CanThrow
                                                                                                                                                               'NotATeamMember
                                                                                                                                                             :> (CanThrow
                                                                                                                                                                   'TeamNotFound
                                                                                                                                                                 :> ("teams"
                                                                                                                                                                     :> (Capture
                                                                                                                                                                           "tid"
                                                                                                                                                                           TeamId
                                                                                                                                                                         :> ("features"
                                                                                                                                                                             :> ("mls"
                                                                                                                                                                                 :> Get
                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                         MLSConfig))))))))))
                                                                                                                                              :<|> (Named
                                                                                                                                                      '("iput",
                                                                                                                                                        MLSConfig)
                                                                                                                                                      (Description
                                                                                                                                                         ""
                                                                                                                                                       :> (Summary
                                                                                                                                                             "Put config for mls"
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 OperationDenied
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             TeamFeatureError
                                                                                                                                                                           :> (CanThrowMany
                                                                                                                                                                                 '[]
                                                                                                                                                                               :> ("teams"
                                                                                                                                                                                   :> (Capture
                                                                                                                                                                                         "tid"
                                                                                                                                                                                         TeamId
                                                                                                                                                                                       :> ("features"
                                                                                                                                                                                           :> ("mls"
                                                                                                                                                                                               :> (ReqBody
                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                     (Feature
                                                                                                                                                                                                        MLSConfig)
                                                                                                                                                                                                   :> Put
                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                           MLSConfig)))))))))))))
                                                                                                                                                    :<|> Named
                                                                                                                                                           '("ipatch",
                                                                                                                                                             MLSConfig)
                                                                                                                                                           (Description
                                                                                                                                                              ""
                                                                                                                                                            :> (Summary
                                                                                                                                                                  "Patch config for mls"
                                                                                                                                                                :> (CanThrow
                                                                                                                                                                      OperationDenied
                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                          'NotATeamMember
                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                              'TeamNotFound
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  TeamFeatureError
                                                                                                                                                                                :> (CanThrowMany
                                                                                                                                                                                      '[]
                                                                                                                                                                                    :> ("teams"
                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                              "tid"
                                                                                                                                                                                              TeamId
                                                                                                                                                                                            :> ("features"
                                                                                                                                                                                                :> ("mls"
                                                                                                                                                                                                    :> (ReqBody
                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                          (LockableFeaturePatch
                                                                                                                                                                                                             MLSConfig)
                                                                                                                                                                                                        :> Patch
                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                                                MLSConfig)))))))))))))))
                                                                                                                                             :<|> ((Named
                                                                                                                                                      '("iget",
                                                                                                                                                        ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                      (Description
                                                                                                                                                         ""
                                                                                                                                                       :> (Summary
                                                                                                                                                             "Get config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                           :> (CanThrow
                                                                                                                                                                 OperationDenied
                                                                                                                                                               :> (CanThrow
                                                                                                                                                                     'NotATeamMember
                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                         'TeamNotFound
                                                                                                                                                                       :> ("teams"
                                                                                                                                                                           :> (Capture
                                                                                                                                                                                 "tid"
                                                                                                                                                                                 TeamId
                                                                                                                                                                               :> ("features"
                                                                                                                                                                                   :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                       :> Get
                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                               ExposeInvitationURLsToTeamAdminConfig))))))))))
                                                                                                                                                    :<|> (Named
                                                                                                                                                            '("iput",
                                                                                                                                                              ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                            (Description
                                                                                                                                                               ""
                                                                                                                                                             :> (Summary
                                                                                                                                                                   "Put config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       OperationDenied
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   TeamFeatureError
                                                                                                                                                                                 :> (CanThrowMany
                                                                                                                                                                                       '[]
                                                                                                                                                                                     :> ("teams"
                                                                                                                                                                                         :> (Capture
                                                                                                                                                                                               "tid"
                                                                                                                                                                                               TeamId
                                                                                                                                                                                             :> ("features"
                                                                                                                                                                                                 :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                                     :> (ReqBody
                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                           (Feature
                                                                                                                                                                                                              ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                                         :> Put
                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                 ExposeInvitationURLsToTeamAdminConfig)))))))))))))
                                                                                                                                                          :<|> Named
                                                                                                                                                                 '("ipatch",
                                                                                                                                                                   ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                 (Description
                                                                                                                                                                    ""
                                                                                                                                                                  :> (Summary
                                                                                                                                                                        "Patch config for exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                            OperationDenied
                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                'NotATeamMember
                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                    'TeamNotFound
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        TeamFeatureError
                                                                                                                                                                                      :> (CanThrowMany
                                                                                                                                                                                            '[]
                                                                                                                                                                                          :> ("teams"
                                                                                                                                                                                              :> (Capture
                                                                                                                                                                                                    "tid"
                                                                                                                                                                                                    TeamId
                                                                                                                                                                                                  :> ("features"
                                                                                                                                                                                                      :> ("exposeInvitationURLsToTeamAdmin"
                                                                                                                                                                                                          :> (ReqBody
                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                (LockableFeaturePatch
                                                                                                                                                                                                                   ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                                                                              :> Patch
                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                                                      ExposeInvitationURLsToTeamAdminConfig)))))))))))))))
                                                                                                                                                   :<|> ((Named
                                                                                                                                                            '("iget",
                                                                                                                                                              OutlookCalIntegrationConfig)
                                                                                                                                                            (Description
                                                                                                                                                               ""
                                                                                                                                                             :> (Summary
                                                                                                                                                                   "Get config for outlookCalIntegration"
                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                       OperationDenied
                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                           'NotATeamMember
                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                               'TeamNotFound
                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                       "tid"
                                                                                                                                                                                       TeamId
                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                         :> ("outlookCalIntegration"
                                                                                                                                                                                             :> Get
                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                  (LockableFeature
                                                                                                                                                                                                     OutlookCalIntegrationConfig))))))))))
                                                                                                                                                          :<|> (Named
                                                                                                                                                                  '("iput",
                                                                                                                                                                    OutlookCalIntegrationConfig)
                                                                                                                                                                  (Description
                                                                                                                                                                     ""
                                                                                                                                                                   :> (Summary
                                                                                                                                                                         "Put config for outlookCalIntegration"
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             OperationDenied
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         TeamFeatureError
                                                                                                                                                                                       :> (CanThrowMany
                                                                                                                                                                                             '[]
                                                                                                                                                                                           :> ("teams"
                                                                                                                                                                                               :> (Capture
                                                                                                                                                                                                     "tid"
                                                                                                                                                                                                     TeamId
                                                                                                                                                                                                   :> ("features"
                                                                                                                                                                                                       :> ("outlookCalIntegration"
                                                                                                                                                                                                           :> (ReqBody
                                                                                                                                                                                                                 '[JSON]
                                                                                                                                                                                                                 (Feature
                                                                                                                                                                                                                    OutlookCalIntegrationConfig)
                                                                                                                                                                                                               :> Put
                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                       OutlookCalIntegrationConfig)))))))))))))
                                                                                                                                                                :<|> Named
                                                                                                                                                                       '("ipatch",
                                                                                                                                                                         OutlookCalIntegrationConfig)
                                                                                                                                                                       (Description
                                                                                                                                                                          ""
                                                                                                                                                                        :> (Summary
                                                                                                                                                                              "Patch config for outlookCalIntegration"
                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                  OperationDenied
                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                      'NotATeamMember
                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                          'TeamNotFound
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              TeamFeatureError
                                                                                                                                                                                            :> (CanThrowMany
                                                                                                                                                                                                  '[]
                                                                                                                                                                                                :> ("teams"
                                                                                                                                                                                                    :> (Capture
                                                                                                                                                                                                          "tid"
                                                                                                                                                                                                          TeamId
                                                                                                                                                                                                        :> ("features"
                                                                                                                                                                                                            :> ("outlookCalIntegration"
                                                                                                                                                                                                                :> (ReqBody
                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                      (LockableFeaturePatch
                                                                                                                                                                                                                         OutlookCalIntegrationConfig)
                                                                                                                                                                                                                    :> Patch
                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                            OutlookCalIntegrationConfig)))))))))))))))
                                                                                                                                                         :<|> ((Named
                                                                                                                                                                  '("iget",
                                                                                                                                                                    MlsE2EIdConfig)
                                                                                                                                                                  (Description
                                                                                                                                                                     ""
                                                                                                                                                                   :> (Summary
                                                                                                                                                                         "Get config for mlsE2EId"
                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                             OperationDenied
                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                 'NotATeamMember
                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                     'TeamNotFound
                                                                                                                                                                                   :> ("teams"
                                                                                                                                                                                       :> (Capture
                                                                                                                                                                                             "tid"
                                                                                                                                                                                             TeamId
                                                                                                                                                                                           :> ("features"
                                                                                                                                                                                               :> ("mlsE2EId"
                                                                                                                                                                                                   :> Get
                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                        (LockableFeature
                                                                                                                                                                                                           MlsE2EIdConfig))))))))))
                                                                                                                                                                :<|> (Named
                                                                                                                                                                        '("iput",
                                                                                                                                                                          MlsE2EIdConfig)
                                                                                                                                                                        (Description
                                                                                                                                                                           ""
                                                                                                                                                                         :> (Summary
                                                                                                                                                                               "Put config for mlsE2EId"
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   OperationDenied
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               TeamFeatureError
                                                                                                                                                                                             :> (CanThrowMany
                                                                                                                                                                                                   '[]
                                                                                                                                                                                                 :> ("teams"
                                                                                                                                                                                                     :> (Capture
                                                                                                                                                                                                           "tid"
                                                                                                                                                                                                           TeamId
                                                                                                                                                                                                         :> ("features"
                                                                                                                                                                                                             :> ("mlsE2EId"
                                                                                                                                                                                                                 :> (ReqBody
                                                                                                                                                                                                                       '[JSON]
                                                                                                                                                                                                                       (Feature
                                                                                                                                                                                                                          MlsE2EIdConfig)
                                                                                                                                                                                                                     :> Put
                                                                                                                                                                                                                          '[JSON]
                                                                                                                                                                                                                          (LockableFeature
                                                                                                                                                                                                                             MlsE2EIdConfig)))))))))))))
                                                                                                                                                                      :<|> Named
                                                                                                                                                                             '("ipatch",
                                                                                                                                                                               MlsE2EIdConfig)
                                                                                                                                                                             (Description
                                                                                                                                                                                ""
                                                                                                                                                                              :> (Summary
                                                                                                                                                                                    "Patch config for mlsE2EId"
                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                        OperationDenied
                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                            'NotATeamMember
                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                'TeamNotFound
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    TeamFeatureError
                                                                                                                                                                                                  :> (CanThrowMany
                                                                                                                                                                                                        '[]
                                                                                                                                                                                                      :> ("teams"
                                                                                                                                                                                                          :> (Capture
                                                                                                                                                                                                                "tid"
                                                                                                                                                                                                                TeamId
                                                                                                                                                                                                              :> ("features"
                                                                                                                                                                                                                  :> ("mlsE2EId"
                                                                                                                                                                                                                      :> (ReqBody
                                                                                                                                                                                                                            '[JSON]
                                                                                                                                                                                                                            (LockableFeaturePatch
                                                                                                                                                                                                                               MlsE2EIdConfig)
                                                                                                                                                                                                                          :> Patch
                                                                                                                                                                                                                               '[JSON]
                                                                                                                                                                                                                               (LockableFeature
                                                                                                                                                                                                                                  MlsE2EIdConfig)))))))))))))))
                                                                                                                                                               :<|> ((Named
                                                                                                                                                                        '("iget",
                                                                                                                                                                          MlsMigrationConfig)
                                                                                                                                                                        (Description
                                                                                                                                                                           ""
                                                                                                                                                                         :> (Summary
                                                                                                                                                                               "Get config for mlsMigration"
                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                   OperationDenied
                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                       'NotATeamMember
                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                           'TeamNotFound
                                                                                                                                                                                         :> ("teams"
                                                                                                                                                                                             :> (Capture
                                                                                                                                                                                                   "tid"
                                                                                                                                                                                                   TeamId
                                                                                                                                                                                                 :> ("features"
                                                                                                                                                                                                     :> ("mlsMigration"
                                                                                                                                                                                                         :> Get
                                                                                                                                                                                                              '[JSON]
                                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                                 MlsMigrationConfig))))))))))
                                                                                                                                                                      :<|> (Named
                                                                                                                                                                              '("iput",
                                                                                                                                                                                MlsMigrationConfig)
                                                                                                                                                                              (Description
                                                                                                                                                                                 ""
                                                                                                                                                                               :> (Summary
                                                                                                                                                                                     "Put config for mlsMigration"
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                     TeamFeatureError
                                                                                                                                                                                                   :> (CanThrowMany
                                                                                                                                                                                                         '[]
                                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                                 TeamId
                                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                                   :> ("mlsMigration"
                                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                             (Feature
                                                                                                                                                                                                                                MlsMigrationConfig)
                                                                                                                                                                                                                           :> Put
                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                   MlsMigrationConfig)))))))))))))
                                                                                                                                                                            :<|> Named
                                                                                                                                                                                   '("ipatch",
                                                                                                                                                                                     MlsMigrationConfig)
                                                                                                                                                                                   (Description
                                                                                                                                                                                      ""
                                                                                                                                                                                    :> (Summary
                                                                                                                                                                                          "Patch config for mlsMigration"
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              OperationDenied
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                    :> (CanThrow
                                                                                                                                                                                                          TeamFeatureError
                                                                                                                                                                                                        :> (CanThrowMany
                                                                                                                                                                                                              '[]
                                                                                                                                                                                                            :> ("teams"
                                                                                                                                                                                                                :> (Capture
                                                                                                                                                                                                                      "tid"
                                                                                                                                                                                                                      TeamId
                                                                                                                                                                                                                    :> ("features"
                                                                                                                                                                                                                        :> ("mlsMigration"
                                                                                                                                                                                                                            :> (ReqBody
                                                                                                                                                                                                                                  '[JSON]
                                                                                                                                                                                                                                  (LockableFeaturePatch
                                                                                                                                                                                                                                     MlsMigrationConfig)
                                                                                                                                                                                                                                :> Patch
                                                                                                                                                                                                                                     '[JSON]
                                                                                                                                                                                                                                     (LockableFeature
                                                                                                                                                                                                                                        MlsMigrationConfig)))))))))))))))
                                                                                                                                                                     :<|> ((Named
                                                                                                                                                                              '("iget",
                                                                                                                                                                                EnforceFileDownloadLocationConfig)
                                                                                                                                                                              (Description
                                                                                                                                                                                 "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                               :> (Summary
                                                                                                                                                                                     "Get config for enforceFileDownloadLocation"
                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                               :> ("teams"
                                                                                                                                                                                                   :> (Capture
                                                                                                                                                                                                         "tid"
                                                                                                                                                                                                         TeamId
                                                                                                                                                                                                       :> ("features"
                                                                                                                                                                                                           :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                               :> Get
                                                                                                                                                                                                                    '[JSON]
                                                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                                                       EnforceFileDownloadLocationConfig))))))))))
                                                                                                                                                                            :<|> (Named
                                                                                                                                                                                    '("iput",
                                                                                                                                                                                      EnforceFileDownloadLocationConfig)
                                                                                                                                                                                    (Description
                                                                                                                                                                                       "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                     :> (Summary
                                                                                                                                                                                           "Put config for enforceFileDownloadLocation"
                                                                                                                                                                                         :> (CanThrow
                                                                                                                                                                                               OperationDenied
                                                                                                                                                                                             :> (CanThrow
                                                                                                                                                                                                   'NotATeamMember
                                                                                                                                                                                                 :> (CanThrow
                                                                                                                                                                                                       'TeamNotFound
                                                                                                                                                                                                     :> (CanThrow
                                                                                                                                                                                                           TeamFeatureError
                                                                                                                                                                                                         :> (CanThrowMany
                                                                                                                                                                                                               '[]
                                                                                                                                                                                                             :> ("teams"
                                                                                                                                                                                                                 :> (Capture
                                                                                                                                                                                                                       "tid"
                                                                                                                                                                                                                       TeamId
                                                                                                                                                                                                                     :> ("features"
                                                                                                                                                                                                                         :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                             :> (ReqBody
                                                                                                                                                                                                                                   '[JSON]
                                                                                                                                                                                                                                   (Feature
                                                                                                                                                                                                                                      EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                 :> Put
                                                                                                                                                                                                                                      '[JSON]
                                                                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                                                                         EnforceFileDownloadLocationConfig)))))))))))))
                                                                                                                                                                                  :<|> Named
                                                                                                                                                                                         '("ipatch",
                                                                                                                                                                                           EnforceFileDownloadLocationConfig)
                                                                                                                                                                                         (Description
                                                                                                                                                                                            "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                                                                          :> (Summary
                                                                                                                                                                                                "Patch config for enforceFileDownloadLocation"
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                TeamFeatureError
                                                                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                                                                    '[]
                                                                                                                                                                                                                  :> ("teams"
                                                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                                                            "tid"
                                                                                                                                                                                                                            TeamId
                                                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                                                              :> ("enforceFileDownloadLocation"
                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                        (LockableFeaturePatch
                                                                                                                                                                                                                                           EnforceFileDownloadLocationConfig)
                                                                                                                                                                                                                                      :> Patch
                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                                              EnforceFileDownloadLocationConfig)))))))))))))))
                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                   '("iget",
                                                                                                                                                                                     LimitedEventFanoutConfig)
                                                                                                                                                                                   (Description
                                                                                                                                                                                      ""
                                                                                                                                                                                    :> (Summary
                                                                                                                                                                                          "Get config for limitedEventFanout"
                                                                                                                                                                                        :> (CanThrow
                                                                                                                                                                                              OperationDenied
                                                                                                                                                                                            :> (CanThrow
                                                                                                                                                                                                  'NotATeamMember
                                                                                                                                                                                                :> (CanThrow
                                                                                                                                                                                                      'TeamNotFound
                                                                                                                                                                                                    :> ("teams"
                                                                                                                                                                                                        :> (Capture
                                                                                                                                                                                                              "tid"
                                                                                                                                                                                                              TeamId
                                                                                                                                                                                                            :> ("features"
                                                                                                                                                                                                                :> ("limitedEventFanout"
                                                                                                                                                                                                                    :> Get
                                                                                                                                                                                                                         '[JSON]
                                                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                                                            LimitedEventFanoutConfig))))))))))
                                                                                                                                                                                 :<|> (Named
                                                                                                                                                                                         '("iput",
                                                                                                                                                                                           LimitedEventFanoutConfig)
                                                                                                                                                                                         (Description
                                                                                                                                                                                            ""
                                                                                                                                                                                          :> (Summary
                                                                                                                                                                                                "Put config for limitedEventFanout"
                                                                                                                                                                                              :> (CanThrow
                                                                                                                                                                                                    OperationDenied
                                                                                                                                                                                                  :> (CanThrow
                                                                                                                                                                                                        'NotATeamMember
                                                                                                                                                                                                      :> (CanThrow
                                                                                                                                                                                                            'TeamNotFound
                                                                                                                                                                                                          :> (CanThrow
                                                                                                                                                                                                                TeamFeatureError
                                                                                                                                                                                                              :> (CanThrowMany
                                                                                                                                                                                                                    '[]
                                                                                                                                                                                                                  :> ("teams"
                                                                                                                                                                                                                      :> (Capture
                                                                                                                                                                                                                            "tid"
                                                                                                                                                                                                                            TeamId
                                                                                                                                                                                                                          :> ("features"
                                                                                                                                                                                                                              :> ("limitedEventFanout"
                                                                                                                                                                                                                                  :> (ReqBody
                                                                                                                                                                                                                                        '[JSON]
                                                                                                                                                                                                                                        (Feature
                                                                                                                                                                                                                                           LimitedEventFanoutConfig)
                                                                                                                                                                                                                                      :> Put
                                                                                                                                                                                                                                           '[JSON]
                                                                                                                                                                                                                                           (LockableFeature
                                                                                                                                                                                                                                              LimitedEventFanoutConfig)))))))))))))
                                                                                                                                                                                       :<|> Named
                                                                                                                                                                                              '("ipatch",
                                                                                                                                                                                                LimitedEventFanoutConfig)
                                                                                                                                                                                              (Description
                                                                                                                                                                                                 ""
                                                                                                                                                                                               :> (Summary
                                                                                                                                                                                                     "Patch config for limitedEventFanout"
                                                                                                                                                                                                   :> (CanThrow
                                                                                                                                                                                                         OperationDenied
                                                                                                                                                                                                       :> (CanThrow
                                                                                                                                                                                                             'NotATeamMember
                                                                                                                                                                                                           :> (CanThrow
                                                                                                                                                                                                                 'TeamNotFound
                                                                                                                                                                                                               :> (CanThrow
                                                                                                                                                                                                                     TeamFeatureError
                                                                                                                                                                                                                   :> (CanThrowMany
                                                                                                                                                                                                                         '[]
                                                                                                                                                                                                                       :> ("teams"
                                                                                                                                                                                                                           :> (Capture
                                                                                                                                                                                                                                 "tid"
                                                                                                                                                                                                                                 TeamId
                                                                                                                                                                                                                               :> ("features"
                                                                                                                                                                                                                                   :> ("limitedEventFanout"
                                                                                                                                                                                                                                       :> (ReqBody
                                                                                                                                                                                                                                             '[JSON]
                                                                                                                                                                                                                                             (LockableFeaturePatch
                                                                                                                                                                                                                                                LimitedEventFanoutConfig)
                                                                                                                                                                                                                                           :> Patch
                                                                                                                                                                                                                                                '[JSON]
                                                                                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                                                                                   LimitedEventFanoutConfig))))))))))))))))))))))))))))))))))
                                                              :<|> (Named
                                                                      '("ilock", FileSharingConfig)
                                                                      (Summary
                                                                         "(Un-)lock fileSharing"
                                                                       :> (Description ""
                                                                           :> (CanThrow
                                                                                 'NotATeamMember
                                                                               :> (CanThrow
                                                                                     'TeamNotFound
                                                                                   :> ("teams"
                                                                                       :> (Capture
                                                                                             "tid"
                                                                                             TeamId
                                                                                           :> ("features"
                                                                                               :> ("fileSharing"
                                                                                                   :> (Capture
                                                                                                         "lockStatus"
                                                                                                         LockStatus
                                                                                                       :> Put
                                                                                                            '[JSON]
                                                                                                            LockStatusResponse)))))))))
                                                                    :<|> (Named
                                                                            '("ilock",
                                                                              ConferenceCallingConfig)
                                                                            (Summary
                                                                               "(Un-)lock conferenceCalling"
                                                                             :> (Description ""
                                                                                 :> (CanThrow
                                                                                       'NotATeamMember
                                                                                     :> (CanThrow
                                                                                           'TeamNotFound
                                                                                         :> ("teams"
                                                                                             :> (Capture
                                                                                                   "tid"
                                                                                                   TeamId
                                                                                                 :> ("features"
                                                                                                     :> ("conferenceCalling"
                                                                                                         :> (Capture
                                                                                                               "lockStatus"
                                                                                                               LockStatus
                                                                                                             :> Put
                                                                                                                  '[JSON]
                                                                                                                  LockStatusResponse)))))))))
                                                                          :<|> (Named
                                                                                  '("ilock",
                                                                                    SelfDeletingMessagesConfig)
                                                                                  (Summary
                                                                                     "(Un-)lock selfDeletingMessages"
                                                                                   :> (Description
                                                                                         ""
                                                                                       :> (CanThrow
                                                                                             'NotATeamMember
                                                                                           :> (CanThrow
                                                                                                 'TeamNotFound
                                                                                               :> ("teams"
                                                                                                   :> (Capture
                                                                                                         "tid"
                                                                                                         TeamId
                                                                                                       :> ("features"
                                                                                                           :> ("selfDeletingMessages"
                                                                                                               :> (Capture
                                                                                                                     "lockStatus"
                                                                                                                     LockStatus
                                                                                                                   :> Put
                                                                                                                        '[JSON]
                                                                                                                        LockStatusResponse)))))))))
                                                                                :<|> (Named
                                                                                        '("ilock",
                                                                                          GuestLinksConfig)
                                                                                        (Summary
                                                                                           "(Un-)lock conversationGuestLinks"
                                                                                         :> (Description
                                                                                               ""
                                                                                             :> (CanThrow
                                                                                                   'NotATeamMember
                                                                                                 :> (CanThrow
                                                                                                       'TeamNotFound
                                                                                                     :> ("teams"
                                                                                                         :> (Capture
                                                                                                               "tid"
                                                                                                               TeamId
                                                                                                             :> ("features"
                                                                                                                 :> ("conversationGuestLinks"
                                                                                                                     :> (Capture
                                                                                                                           "lockStatus"
                                                                                                                           LockStatus
                                                                                                                         :> Put
                                                                                                                              '[JSON]
                                                                                                                              LockStatusResponse)))))))))
                                                                                      :<|> (Named
                                                                                              '("ilock",
                                                                                                SndFactorPasswordChallengeConfig)
                                                                                              (Summary
                                                                                                 "(Un-)lock sndFactorPasswordChallenge"
                                                                                               :> (Description
                                                                                                     ""
                                                                                                   :> (CanThrow
                                                                                                         'NotATeamMember
                                                                                                       :> (CanThrow
                                                                                                             'TeamNotFound
                                                                                                           :> ("teams"
                                                                                                               :> (Capture
                                                                                                                     "tid"
                                                                                                                     TeamId
                                                                                                                   :> ("features"
                                                                                                                       :> ("sndFactorPasswordChallenge"
                                                                                                                           :> (Capture
                                                                                                                                 "lockStatus"
                                                                                                                                 LockStatus
                                                                                                                               :> Put
                                                                                                                                    '[JSON]
                                                                                                                                    LockStatusResponse)))))))))
                                                                                            :<|> (Named
                                                                                                    '("ilock",
                                                                                                      MLSConfig)
                                                                                                    (Summary
                                                                                                       "(Un-)lock mls"
                                                                                                     :> (Description
                                                                                                           ""
                                                                                                         :> (CanThrow
                                                                                                               'NotATeamMember
                                                                                                             :> (CanThrow
                                                                                                                   'TeamNotFound
                                                                                                                 :> ("teams"
                                                                                                                     :> (Capture
                                                                                                                           "tid"
                                                                                                                           TeamId
                                                                                                                         :> ("features"
                                                                                                                             :> ("mls"
                                                                                                                                 :> (Capture
                                                                                                                                       "lockStatus"
                                                                                                                                       LockStatus
                                                                                                                                     :> Put
                                                                                                                                          '[JSON]
                                                                                                                                          LockStatusResponse)))))))))
                                                                                                  :<|> (Named
                                                                                                          '("ilock",
                                                                                                            OutlookCalIntegrationConfig)
                                                                                                          (Summary
                                                                                                             "(Un-)lock outlookCalIntegration"
                                                                                                           :> (Description
                                                                                                                 ""
                                                                                                               :> (CanThrow
                                                                                                                     'NotATeamMember
                                                                                                                   :> (CanThrow
                                                                                                                         'TeamNotFound
                                                                                                                       :> ("teams"
                                                                                                                           :> (Capture
                                                                                                                                 "tid"
                                                                                                                                 TeamId
                                                                                                                               :> ("features"
                                                                                                                                   :> ("outlookCalIntegration"
                                                                                                                                       :> (Capture
                                                                                                                                             "lockStatus"
                                                                                                                                             LockStatus
                                                                                                                                           :> Put
                                                                                                                                                '[JSON]
                                                                                                                                                LockStatusResponse)))))))))
                                                                                                        :<|> (Named
                                                                                                                '("ilock",
                                                                                                                  MlsE2EIdConfig)
                                                                                                                (Summary
                                                                                                                   "(Un-)lock mlsE2EId"
                                                                                                                 :> (Description
                                                                                                                       ""
                                                                                                                     :> (CanThrow
                                                                                                                           'NotATeamMember
                                                                                                                         :> (CanThrow
                                                                                                                               'TeamNotFound
                                                                                                                             :> ("teams"
                                                                                                                                 :> (Capture
                                                                                                                                       "tid"
                                                                                                                                       TeamId
                                                                                                                                     :> ("features"
                                                                                                                                         :> ("mlsE2EId"
                                                                                                                                             :> (Capture
                                                                                                                                                   "lockStatus"
                                                                                                                                                   LockStatus
                                                                                                                                                 :> Put
                                                                                                                                                      '[JSON]
                                                                                                                                                      LockStatusResponse)))))))))
                                                                                                              :<|> (Named
                                                                                                                      '("ilock",
                                                                                                                        MlsMigrationConfig)
                                                                                                                      (Summary
                                                                                                                         "(Un-)lock mlsMigration"
                                                                                                                       :> (Description
                                                                                                                             ""
                                                                                                                           :> (CanThrow
                                                                                                                                 'NotATeamMember
                                                                                                                               :> (CanThrow
                                                                                                                                     'TeamNotFound
                                                                                                                                   :> ("teams"
                                                                                                                                       :> (Capture
                                                                                                                                             "tid"
                                                                                                                                             TeamId
                                                                                                                                           :> ("features"
                                                                                                                                               :> ("mlsMigration"
                                                                                                                                                   :> (Capture
                                                                                                                                                         "lockStatus"
                                                                                                                                                         LockStatus
                                                                                                                                                       :> Put
                                                                                                                                                            '[JSON]
                                                                                                                                                            LockStatusResponse)))))))))
                                                                                                                    :<|> (Named
                                                                                                                            '("ilock",
                                                                                                                              EnforceFileDownloadLocationConfig)
                                                                                                                            (Summary
                                                                                                                               "(Un-)lock enforceFileDownloadLocation"
                                                                                                                             :> (Description
                                                                                                                                   "<p><b>Custom feature: only supported on some dedicated on-prem systems.</b></p>"
                                                                                                                                 :> (CanThrow
                                                                                                                                       'NotATeamMember
                                                                                                                                     :> (CanThrow
                                                                                                                                           'TeamNotFound
                                                                                                                                         :> ("teams"
                                                                                                                                             :> (Capture
                                                                                                                                                   "tid"
                                                                                                                                                   TeamId
                                                                                                                                                 :> ("features"
                                                                                                                                                     :> ("enforceFileDownloadLocation"
                                                                                                                                                         :> (Capture
                                                                                                                                                               "lockStatus"
                                                                                                                                                               LockStatus
                                                                                                                                                             :> Put
                                                                                                                                                                  '[JSON]
                                                                                                                                                                  LockStatusResponse)))))))))
                                                                                                                          :<|> (Named
                                                                                                                                  '("igetmulti",
                                                                                                                                    SearchVisibilityInboundConfig)
                                                                                                                                  (Summary
                                                                                                                                     "Get team feature status in bulk for feature searchVisibilityInbound"
                                                                                                                                   :> ("features-multi-teams"
                                                                                                                                       :> ("searchVisibilityInbound"
                                                                                                                                           :> (ReqBody
                                                                                                                                                 '[JSON]
                                                                                                                                                 TeamFeatureNoConfigMultiRequest
                                                                                                                                               :> Post
                                                                                                                                                    '[JSON]
                                                                                                                                                    (TeamFeatureNoConfigMultiResponse
                                                                                                                                                       SearchVisibilityInboundConfig)))))
                                                                                                                                :<|> Named
                                                                                                                                       "feature-configs-internal"
                                                                                                                                       (Summary
                                                                                                                                          "Get all feature configs (for user/team; if n/a fall back to site config)."
                                                                                                                                        :> ("feature-configs"
                                                                                                                                            :> (CanThrow
                                                                                                                                                  OperationDenied
                                                                                                                                                :> (CanThrow
                                                                                                                                                      'NotATeamMember
                                                                                                                                                    :> (CanThrow
                                                                                                                                                          'TeamNotFound
                                                                                                                                                        :> (QueryParam'
                                                                                                                                                              '[Optional,
                                                                                                                                                                Strict,
                                                                                                                                                                Description
                                                                                                                                                                  "Optional user id"]
                                                                                                                                                              "user_id"
                                                                                                                                                              UserId
                                                                                                                                                            :> Get
                                                                                                                                                                 '[JSON]
                                                                                                                                                                 AllTeamFeatures))))))))))))))))))
                                                             :<|> (IFederationAPI
                                                                   :<|> (IConversationAPI
                                                                         :<|> IEJPDAPI)))))))))))))
  '[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,
    Error InvalidInput, Error InternalError, Error FederationError,
    Async, Delay, Fail, Embed IO, Error JSONResponse, Resource,
    Final IO]
API InternalAPI GalleyEffects
internalAPI
            (Named "status" (Handler ())
 :<|> (Named
         "delete-user"
         (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
          -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
          -> QualifiedWithTag 'QLocal UserId
          -> Maybe ConnId
          -> Handler ())
       :<|> (Named
               "connect"
               (Dict (HasAnnotation 'Remote "brig" "api-version")
                -> Dict (HasAnnotation 'Remote "galley" "on-conversation-created")
                -> Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                -> QualifiedWithTag 'QLocal UserId
                -> Maybe ConnId
                -> Connect
                -> Handler (ResponseForExistedCreated Conversation))
             :<|> (Named
                     "get-conversation-clients" (GroupId -> Handler ClientList)
                   :<|> (Named
                           "guard-legalhold-policy-conflicts"
                           (GuardLegalholdPolicyConflicts -> Handler ())
                         :<|> ((TeamId
                                -> Named "set-team-legalhold-whitelisted" (Handler ())
                                   :<|> (Named "unset-team-legalhold-whitelisted" (Handler ())
                                         :<|> Named
                                                "get-team-legalhold-whitelisted" (Handler Bool)))
                               :<|> ((TeamId
                                      -> Named "get-team-internal" (Handler TeamData)
                                         :<|> (Named
                                                 "create-binding-team"
                                                 (UserId -> BindingNewTeam -> Handler TeamId)
                                               :<|> (Named
                                                       "delete-binding-team" (Bool -> Handler ())
                                                     :<|> (Named "get-team-name" (Handler TeamName)
                                                           :<|> (Named
                                                                   "update-team-status"
                                                                   (TeamStatusUpdate -> Handler ())
                                                                 :<|> ((Named
                                                                          "unchecked-add-team-member"
                                                                          (NewTeamMember
                                                                           -> Handler ())
                                                                        :<|> (Named
                                                                                "unchecked-get-team-members"
                                                                                (Maybe
                                                                                   (Range
                                                                                      1
                                                                                      HardTruncationLimit
                                                                                      Int32)
                                                                                 -> Handler
                                                                                      TeamMemberList)
                                                                              :<|> (Named
                                                                                      "unchecked-get-team-member"
                                                                                      (UserId
                                                                                       -> Handler
                                                                                            TeamMember)
                                                                                    :<|> (Named
                                                                                            "can-user-join-team"
                                                                                            (Handler
                                                                                               ())
                                                                                          :<|> Named
                                                                                                 "unchecked-update-team-member"
                                                                                                 (NewTeamMember
                                                                                                  -> Handler
                                                                                                       ())))))
                                                                       :<|> (Named
                                                                               "user-is-team-owner"
                                                                               (UserId
                                                                                -> Handler ())
                                                                             :<|> (Named
                                                                                     "get-search-visibility-internal"
                                                                                     (Handler
                                                                                        TeamSearchVisibilityView)
                                                                                   :<|> Named
                                                                                          "set-search-visibility-internal"
                                                                                          (TeamSearchVisibilityView
                                                                                           -> Handler
                                                                                                ())))))))))
                                     :<|> ((Named
                                              "get-team-members" (UserId -> Handler TeamMemberList)
                                            :<|> (Named "get-team-id" (UserId -> Handler TeamId)
                                                  :<|> (Named
                                                          "test-get-clients"
                                                          (UserId -> Handler [ClientId])
                                                        :<|> (Named
                                                                "test-add-client"
                                                                (UserId -> ClientId -> Handler ())
                                                              :<|> (Named
                                                                      "test-delete-client"
                                                                      (UserId
                                                                       -> ClientId -> Handler ())
                                                                    :<|> (Named
                                                                            "add-service"
                                                                            (Service -> Handler ())
                                                                          :<|> (Named
                                                                                  "delete-service"
                                                                                  (ServiceRef
                                                                                   -> Handler ())
                                                                                :<|> (Named
                                                                                        "i-add-bot"
                                                                                        (QualifiedWithTag
                                                                                           'QLocal
                                                                                           UserId
                                                                                         -> ConnId
                                                                                         -> AddBot
                                                                                         -> Handler
                                                                                              Event)
                                                                                      :<|> (Named
                                                                                              "delete-bot"
                                                                                              (QualifiedWithTag
                                                                                                 'QLocal
                                                                                                 UserId
                                                                                               -> Maybe
                                                                                                    ConnId
                                                                                               -> RemoveBot
                                                                                               -> Handler
                                                                                                    (UpdateResult
                                                                                                       Event))
                                                                                            :<|> (Named
                                                                                                    "put-custom-backend"
                                                                                                    (Domain
                                                                                                     -> CustomBackend
                                                                                                     -> Handler
                                                                                                          ())
                                                                                                  :<|> Named
                                                                                                         "delete-custom-backend"
                                                                                                         (Domain
                                                                                                          -> Handler
                                                                                                               ())))))))))))
                                           :<|> (Named
                                                   "upsert-one2one"
                                                   (UpsertOne2OneConversationRequest -> Handler ())
                                                 :<|> ((((Named
                                                            '("iget", LegalholdConfig)
                                                            (TeamId
                                                             -> Handler
                                                                  (LockableFeature LegalholdConfig))
                                                          :<|> (Named
                                                                  '("iput", LegalholdConfig)
                                                                  (TeamId
                                                                   -> Feature LegalholdConfig
                                                                   -> Handler
                                                                        (LockableFeature
                                                                           LegalholdConfig))
                                                                :<|> Named
                                                                       '("ipatch", LegalholdConfig)
                                                                       (TeamId
                                                                        -> LockableFeaturePatch
                                                                             LegalholdConfig
                                                                        -> Handler
                                                                             (LockableFeature
                                                                                LegalholdConfig))))
                                                         :<|> ((Named
                                                                  '("iget", SSOConfig)
                                                                  (TeamId
                                                                   -> Handler
                                                                        (LockableFeature SSOConfig))
                                                                :<|> (Named
                                                                        '("iput", SSOConfig)
                                                                        (TeamId
                                                                         -> Feature SSOConfig
                                                                         -> Handler
                                                                              (LockableFeature
                                                                                 SSOConfig))
                                                                      :<|> Named
                                                                             '("ipatch", SSOConfig)
                                                                             (TeamId
                                                                              -> LockableFeaturePatch
                                                                                   SSOConfig
                                                                              -> Handler
                                                                                   (LockableFeature
                                                                                      SSOConfig))))
                                                               :<|> ((Named
                                                                        '("iget",
                                                                          SearchVisibilityAvailableConfig)
                                                                        (TeamId
                                                                         -> Handler
                                                                              (LockableFeature
                                                                                 SearchVisibilityAvailableConfig))
                                                                      :<|> (Named
                                                                              '("iput",
                                                                                SearchVisibilityAvailableConfig)
                                                                              (TeamId
                                                                               -> Feature
                                                                                    SearchVisibilityAvailableConfig
                                                                               -> Handler
                                                                                    (LockableFeature
                                                                                       SearchVisibilityAvailableConfig))
                                                                            :<|> Named
                                                                                   '("ipatch",
                                                                                     SearchVisibilityAvailableConfig)
                                                                                   (TeamId
                                                                                    -> LockableFeaturePatch
                                                                                         SearchVisibilityAvailableConfig
                                                                                    -> Handler
                                                                                         (LockableFeature
                                                                                            SearchVisibilityAvailableConfig))))
                                                                     :<|> ((Named
                                                                              '("iget",
                                                                                SearchVisibilityInboundConfig)
                                                                              (TeamId
                                                                               -> Handler
                                                                                    (LockableFeature
                                                                                       SearchVisibilityInboundConfig))
                                                                            :<|> (Named
                                                                                    '("iput",
                                                                                      SearchVisibilityInboundConfig)
                                                                                    (TeamId
                                                                                     -> Feature
                                                                                          SearchVisibilityInboundConfig
                                                                                     -> Handler
                                                                                          (LockableFeature
                                                                                             SearchVisibilityInboundConfig))
                                                                                  :<|> Named
                                                                                         '("ipatch",
                                                                                           SearchVisibilityInboundConfig)
                                                                                         (TeamId
                                                                                          -> LockableFeaturePatch
                                                                                               SearchVisibilityInboundConfig
                                                                                          -> Handler
                                                                                               (LockableFeature
                                                                                                  SearchVisibilityInboundConfig))))
                                                                           :<|> ((Named
                                                                                    '("iget",
                                                                                      ValidateSAMLEmailsConfig)
                                                                                    (TeamId
                                                                                     -> Handler
                                                                                          (LockableFeature
                                                                                             ValidateSAMLEmailsConfig))
                                                                                  :<|> (Named
                                                                                          '("iput",
                                                                                            ValidateSAMLEmailsConfig)
                                                                                          (TeamId
                                                                                           -> Feature
                                                                                                ValidateSAMLEmailsConfig
                                                                                           -> Handler
                                                                                                (LockableFeature
                                                                                                   ValidateSAMLEmailsConfig))
                                                                                        :<|> Named
                                                                                               '("ipatch",
                                                                                                 ValidateSAMLEmailsConfig)
                                                                                               (TeamId
                                                                                                -> LockableFeaturePatch
                                                                                                     ValidateSAMLEmailsConfig
                                                                                                -> Handler
                                                                                                     (LockableFeature
                                                                                                        ValidateSAMLEmailsConfig))))
                                                                                 :<|> ((Named
                                                                                          '("iget",
                                                                                            DigitalSignaturesConfig)
                                                                                          (TeamId
                                                                                           -> Handler
                                                                                                (LockableFeature
                                                                                                   DigitalSignaturesConfig))
                                                                                        :<|> (Named
                                                                                                '("iput",
                                                                                                  DigitalSignaturesConfig)
                                                                                                (TeamId
                                                                                                 -> Feature
                                                                                                      DigitalSignaturesConfig
                                                                                                 -> Handler
                                                                                                      (LockableFeature
                                                                                                         DigitalSignaturesConfig))
                                                                                              :<|> Named
                                                                                                     '("ipatch",
                                                                                                       DigitalSignaturesConfig)
                                                                                                     (TeamId
                                                                                                      -> LockableFeaturePatch
                                                                                                           DigitalSignaturesConfig
                                                                                                      -> Handler
                                                                                                           (LockableFeature
                                                                                                              DigitalSignaturesConfig))))
                                                                                       :<|> ((Named
                                                                                                '("iget",
                                                                                                  AppLockConfig)
                                                                                                (TeamId
                                                                                                 -> Handler
                                                                                                      (LockableFeature
                                                                                                         AppLockConfig))
                                                                                              :<|> (Named
                                                                                                      '("iput",
                                                                                                        AppLockConfig)
                                                                                                      (TeamId
                                                                                                       -> Feature
                                                                                                            AppLockConfig
                                                                                                       -> Handler
                                                                                                            (LockableFeature
                                                                                                               AppLockConfig))
                                                                                                    :<|> Named
                                                                                                           '("ipatch",
                                                                                                             AppLockConfig)
                                                                                                           (TeamId
                                                                                                            -> LockableFeaturePatch
                                                                                                                 AppLockConfig
                                                                                                            -> Handler
                                                                                                                 (LockableFeature
                                                                                                                    AppLockConfig))))
                                                                                             :<|> ((Named
                                                                                                      '("iget",
                                                                                                        FileSharingConfig)
                                                                                                      (TeamId
                                                                                                       -> Handler
                                                                                                            (LockableFeature
                                                                                                               FileSharingConfig))
                                                                                                    :<|> (Named
                                                                                                            '("iput",
                                                                                                              FileSharingConfig)
                                                                                                            (TeamId
                                                                                                             -> Feature
                                                                                                                  FileSharingConfig
                                                                                                             -> Handler
                                                                                                                  (LockableFeature
                                                                                                                     FileSharingConfig))
                                                                                                          :<|> Named
                                                                                                                 '("ipatch",
                                                                                                                   FileSharingConfig)
                                                                                                                 (TeamId
                                                                                                                  -> LockableFeaturePatch
                                                                                                                       FileSharingConfig
                                                                                                                  -> Handler
                                                                                                                       (LockableFeature
                                                                                                                          FileSharingConfig))))
                                                                                                   :<|> (Named
                                                                                                           '("iget",
                                                                                                             ClassifiedDomainsConfig)
                                                                                                           (TeamId
                                                                                                            -> Handler
                                                                                                                 (LockableFeature
                                                                                                                    ClassifiedDomainsConfig))
                                                                                                         :<|> ((Named
                                                                                                                  '("iget",
                                                                                                                    ConferenceCallingConfig)
                                                                                                                  (TeamId
                                                                                                                   -> Handler
                                                                                                                        (LockableFeature
                                                                                                                           ConferenceCallingConfig))
                                                                                                                :<|> (Named
                                                                                                                        '("iput",
                                                                                                                          ConferenceCallingConfig)
                                                                                                                        (TeamId
                                                                                                                         -> Feature
                                                                                                                              ConferenceCallingConfig
                                                                                                                         -> Handler
                                                                                                                              (LockableFeature
                                                                                                                                 ConferenceCallingConfig))
                                                                                                                      :<|> Named
                                                                                                                             '("ipatch",
                                                                                                                               ConferenceCallingConfig)
                                                                                                                             (TeamId
                                                                                                                              -> LockableFeaturePatch
                                                                                                                                   ConferenceCallingConfig
                                                                                                                              -> Handler
                                                                                                                                   (LockableFeature
                                                                                                                                      ConferenceCallingConfig))))
                                                                                                               :<|> ((Named
                                                                                                                        '("iget",
                                                                                                                          SelfDeletingMessagesConfig)
                                                                                                                        (TeamId
                                                                                                                         -> Handler
                                                                                                                              (LockableFeature
                                                                                                                                 SelfDeletingMessagesConfig))
                                                                                                                      :<|> (Named
                                                                                                                              '("iput",
                                                                                                                                SelfDeletingMessagesConfig)
                                                                                                                              (TeamId
                                                                                                                               -> Feature
                                                                                                                                    SelfDeletingMessagesConfig
                                                                                                                               -> Handler
                                                                                                                                    (LockableFeature
                                                                                                                                       SelfDeletingMessagesConfig))
                                                                                                                            :<|> Named
                                                                                                                                   '("ipatch",
                                                                                                                                     SelfDeletingMessagesConfig)
                                                                                                                                   (TeamId
                                                                                                                                    -> LockableFeaturePatch
                                                                                                                                         SelfDeletingMessagesConfig
                                                                                                                                    -> Handler
                                                                                                                                         (LockableFeature
                                                                                                                                            SelfDeletingMessagesConfig))))
                                                                                                                     :<|> ((Named
                                                                                                                              '("iget",
                                                                                                                                GuestLinksConfig)
                                                                                                                              (TeamId
                                                                                                                               -> Handler
                                                                                                                                    (LockableFeature
                                                                                                                                       GuestLinksConfig))
                                                                                                                            :<|> (Named
                                                                                                                                    '("iput",
                                                                                                                                      GuestLinksConfig)
                                                                                                                                    (TeamId
                                                                                                                                     -> Feature
                                                                                                                                          GuestLinksConfig
                                                                                                                                     -> Handler
                                                                                                                                          (LockableFeature
                                                                                                                                             GuestLinksConfig))
                                                                                                                                  :<|> Named
                                                                                                                                         '("ipatch",
                                                                                                                                           GuestLinksConfig)
                                                                                                                                         (TeamId
                                                                                                                                          -> LockableFeaturePatch
                                                                                                                                               GuestLinksConfig
                                                                                                                                          -> Handler
                                                                                                                                               (LockableFeature
                                                                                                                                                  GuestLinksConfig))))
                                                                                                                           :<|> ((Named
                                                                                                                                    '("iget",
                                                                                                                                      SndFactorPasswordChallengeConfig)
                                                                                                                                    (TeamId
                                                                                                                                     -> Handler
                                                                                                                                          (LockableFeature
                                                                                                                                             SndFactorPasswordChallengeConfig))
                                                                                                                                  :<|> (Named
                                                                                                                                          '("iput",
                                                                                                                                            SndFactorPasswordChallengeConfig)
                                                                                                                                          (TeamId
                                                                                                                                           -> Feature
                                                                                                                                                SndFactorPasswordChallengeConfig
                                                                                                                                           -> Handler
                                                                                                                                                (LockableFeature
                                                                                                                                                   SndFactorPasswordChallengeConfig))
                                                                                                                                        :<|> Named
                                                                                                                                               '("ipatch",
                                                                                                                                                 SndFactorPasswordChallengeConfig)
                                                                                                                                               (TeamId
                                                                                                                                                -> LockableFeaturePatch
                                                                                                                                                     SndFactorPasswordChallengeConfig
                                                                                                                                                -> Handler
                                                                                                                                                     (LockableFeature
                                                                                                                                                        SndFactorPasswordChallengeConfig))))
                                                                                                                                 :<|> ((Named
                                                                                                                                          '("iget",
                                                                                                                                            MLSConfig)
                                                                                                                                          (TeamId
                                                                                                                                           -> Handler
                                                                                                                                                (LockableFeature
                                                                                                                                                   MLSConfig))
                                                                                                                                        :<|> (Named
                                                                                                                                                '("iput",
                                                                                                                                                  MLSConfig)
                                                                                                                                                (TeamId
                                                                                                                                                 -> Feature
                                                                                                                                                      MLSConfig
                                                                                                                                                 -> Handler
                                                                                                                                                      (LockableFeature
                                                                                                                                                         MLSConfig))
                                                                                                                                              :<|> Named
                                                                                                                                                     '("ipatch",
                                                                                                                                                       MLSConfig)
                                                                                                                                                     (TeamId
                                                                                                                                                      -> LockableFeaturePatch
                                                                                                                                                           MLSConfig
                                                                                                                                                      -> Handler
                                                                                                                                                           (LockableFeature
                                                                                                                                                              MLSConfig))))
                                                                                                                                       :<|> ((Named
                                                                                                                                                '("iget",
                                                                                                                                                  ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                (TeamId
                                                                                                                                                 -> Handler
                                                                                                                                                      (LockableFeature
                                                                                                                                                         ExposeInvitationURLsToTeamAdminConfig))
                                                                                                                                              :<|> (Named
                                                                                                                                                      '("iput",
                                                                                                                                                        ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                      (TeamId
                                                                                                                                                       -> Feature
                                                                                                                                                            ExposeInvitationURLsToTeamAdminConfig
                                                                                                                                                       -> Handler
                                                                                                                                                            (LockableFeature
                                                                                                                                                               ExposeInvitationURLsToTeamAdminConfig))
                                                                                                                                                    :<|> Named
                                                                                                                                                           '("ipatch",
                                                                                                                                                             ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                           (TeamId
                                                                                                                                                            -> LockableFeaturePatch
                                                                                                                                                                 ExposeInvitationURLsToTeamAdminConfig
                                                                                                                                                            -> Handler
                                                                                                                                                                 (LockableFeature
                                                                                                                                                                    ExposeInvitationURLsToTeamAdminConfig))))
                                                                                                                                             :<|> ((Named
                                                                                                                                                      '("iget",
                                                                                                                                                        OutlookCalIntegrationConfig)
                                                                                                                                                      (TeamId
                                                                                                                                                       -> Handler
                                                                                                                                                            (LockableFeature
                                                                                                                                                               OutlookCalIntegrationConfig))
                                                                                                                                                    :<|> (Named
                                                                                                                                                            '("iput",
                                                                                                                                                              OutlookCalIntegrationConfig)
                                                                                                                                                            (TeamId
                                                                                                                                                             -> Feature
                                                                                                                                                                  OutlookCalIntegrationConfig
                                                                                                                                                             -> Handler
                                                                                                                                                                  (LockableFeature
                                                                                                                                                                     OutlookCalIntegrationConfig))
                                                                                                                                                          :<|> Named
                                                                                                                                                                 '("ipatch",
                                                                                                                                                                   OutlookCalIntegrationConfig)
                                                                                                                                                                 (TeamId
                                                                                                                                                                  -> LockableFeaturePatch
                                                                                                                                                                       OutlookCalIntegrationConfig
                                                                                                                                                                  -> Handler
                                                                                                                                                                       (LockableFeature
                                                                                                                                                                          OutlookCalIntegrationConfig))))
                                                                                                                                                   :<|> ((Named
                                                                                                                                                            '("iget",
                                                                                                                                                              MlsE2EIdConfig)
                                                                                                                                                            (TeamId
                                                                                                                                                             -> Handler
                                                                                                                                                                  (LockableFeature
                                                                                                                                                                     MlsE2EIdConfig))
                                                                                                                                                          :<|> (Named
                                                                                                                                                                  '("iput",
                                                                                                                                                                    MlsE2EIdConfig)
                                                                                                                                                                  (TeamId
                                                                                                                                                                   -> Feature
                                                                                                                                                                        MlsE2EIdConfig
                                                                                                                                                                   -> Handler
                                                                                                                                                                        (LockableFeature
                                                                                                                                                                           MlsE2EIdConfig))
                                                                                                                                                                :<|> Named
                                                                                                                                                                       '("ipatch",
                                                                                                                                                                         MlsE2EIdConfig)
                                                                                                                                                                       (TeamId
                                                                                                                                                                        -> LockableFeaturePatch
                                                                                                                                                                             MlsE2EIdConfig
                                                                                                                                                                        -> Handler
                                                                                                                                                                             (LockableFeature
                                                                                                                                                                                MlsE2EIdConfig))))
                                                                                                                                                         :<|> ((Named
                                                                                                                                                                  '("iget",
                                                                                                                                                                    MlsMigrationConfig)
                                                                                                                                                                  (TeamId
                                                                                                                                                                   -> Handler
                                                                                                                                                                        (LockableFeature
                                                                                                                                                                           MlsMigrationConfig))
                                                                                                                                                                :<|> (Named
                                                                                                                                                                        '("iput",
                                                                                                                                                                          MlsMigrationConfig)
                                                                                                                                                                        (TeamId
                                                                                                                                                                         -> Feature
                                                                                                                                                                              MlsMigrationConfig
                                                                                                                                                                         -> Handler
                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                 MlsMigrationConfig))
                                                                                                                                                                      :<|> Named
                                                                                                                                                                             '("ipatch",
                                                                                                                                                                               MlsMigrationConfig)
                                                                                                                                                                             (TeamId
                                                                                                                                                                              -> LockableFeaturePatch
                                                                                                                                                                                   MlsMigrationConfig
                                                                                                                                                                              -> Handler
                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                      MlsMigrationConfig))))
                                                                                                                                                               :<|> ((Named
                                                                                                                                                                        '("iget",
                                                                                                                                                                          EnforceFileDownloadLocationConfig)
                                                                                                                                                                        (TeamId
                                                                                                                                                                         -> Handler
                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                 EnforceFileDownloadLocationConfig))
                                                                                                                                                                      :<|> (Named
                                                                                                                                                                              '("iput",
                                                                                                                                                                                EnforceFileDownloadLocationConfig)
                                                                                                                                                                              (TeamId
                                                                                                                                                                               -> Feature
                                                                                                                                                                                    EnforceFileDownloadLocationConfig
                                                                                                                                                                               -> Handler
                                                                                                                                                                                    (LockableFeature
                                                                                                                                                                                       EnforceFileDownloadLocationConfig))
                                                                                                                                                                            :<|> Named
                                                                                                                                                                                   '("ipatch",
                                                                                                                                                                                     EnforceFileDownloadLocationConfig)
                                                                                                                                                                                   (TeamId
                                                                                                                                                                                    -> LockableFeaturePatch
                                                                                                                                                                                         EnforceFileDownloadLocationConfig
                                                                                                                                                                                    -> Handler
                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                            EnforceFileDownloadLocationConfig))))
                                                                                                                                                                     :<|> (Named
                                                                                                                                                                             '("iget",
                                                                                                                                                                               LimitedEventFanoutConfig)
                                                                                                                                                                             (TeamId
                                                                                                                                                                              -> Handler
                                                                                                                                                                                   (LockableFeature
                                                                                                                                                                                      LimitedEventFanoutConfig))
                                                                                                                                                                           :<|> (Named
                                                                                                                                                                                   '("iput",
                                                                                                                                                                                     LimitedEventFanoutConfig)
                                                                                                                                                                                   (TeamId
                                                                                                                                                                                    -> Feature
                                                                                                                                                                                         LimitedEventFanoutConfig
                                                                                                                                                                                    -> Handler
                                                                                                                                                                                         (LockableFeature
                                                                                                                                                                                            LimitedEventFanoutConfig))
                                                                                                                                                                                 :<|> Named
                                                                                                                                                                                        '("ipatch",
                                                                                                                                                                                          LimitedEventFanoutConfig)
                                                                                                                                                                                        (TeamId
                                                                                                                                                                                         -> LockableFeaturePatch
                                                                                                                                                                                              LimitedEventFanoutConfig
                                                                                                                                                                                         -> Handler
                                                                                                                                                                                              (LockableFeature
                                                                                                                                                                                                 LimitedEventFanoutConfig)))))))))))))))))))))))
                                                        :<|> (Named
                                                                '("ilock", FileSharingConfig)
                                                                (TeamId
                                                                 -> LockStatus
                                                                 -> Handler LockStatusResponse)
                                                              :<|> (Named
                                                                      '("ilock",
                                                                        ConferenceCallingConfig)
                                                                      (TeamId
                                                                       -> LockStatus
                                                                       -> Handler
                                                                            LockStatusResponse)
                                                                    :<|> (Named
                                                                            '("ilock",
                                                                              SelfDeletingMessagesConfig)
                                                                            (TeamId
                                                                             -> LockStatus
                                                                             -> Handler
                                                                                  LockStatusResponse)
                                                                          :<|> (Named
                                                                                  '("ilock",
                                                                                    GuestLinksConfig)
                                                                                  (TeamId
                                                                                   -> LockStatus
                                                                                   -> Handler
                                                                                        LockStatusResponse)
                                                                                :<|> (Named
                                                                                        '("ilock",
                                                                                          SndFactorPasswordChallengeConfig)
                                                                                        (TeamId
                                                                                         -> LockStatus
                                                                                         -> Handler
                                                                                              LockStatusResponse)
                                                                                      :<|> (Named
                                                                                              '("ilock",
                                                                                                MLSConfig)
                                                                                              (TeamId
                                                                                               -> LockStatus
                                                                                               -> Handler
                                                                                                    LockStatusResponse)
                                                                                            :<|> (Named
                                                                                                    '("ilock",
                                                                                                      OutlookCalIntegrationConfig)
                                                                                                    (TeamId
                                                                                                     -> LockStatus
                                                                                                     -> Handler
                                                                                                          LockStatusResponse)
                                                                                                  :<|> (Named
                                                                                                          '("ilock",
                                                                                                            MlsE2EIdConfig)
                                                                                                          (TeamId
                                                                                                           -> LockStatus
                                                                                                           -> Handler
                                                                                                                LockStatusResponse)
                                                                                                        :<|> (Named
                                                                                                                '("ilock",
                                                                                                                  MlsMigrationConfig)
                                                                                                                (TeamId
                                                                                                                 -> LockStatus
                                                                                                                 -> Handler
                                                                                                                      LockStatusResponse)
                                                                                                              :<|> (Named
                                                                                                                      '("ilock",
                                                                                                                        EnforceFileDownloadLocationConfig)
                                                                                                                      (TeamId
                                                                                                                       -> LockStatus
                                                                                                                       -> Handler
                                                                                                                            LockStatusResponse)
                                                                                                                    :<|> (Named
                                                                                                                            '("igetmulti",
                                                                                                                              SearchVisibilityInboundConfig)
                                                                                                                            (TeamFeatureNoConfigMultiRequest
                                                                                                                             -> Handler
                                                                                                                                  (TeamFeatureNoConfigMultiResponse
                                                                                                                                     SearchVisibilityInboundConfig))
                                                                                                                          :<|> Named
                                                                                                                                 "feature-configs-internal"
                                                                                                                                 (Maybe
                                                                                                                                    UserId
                                                                                                                                  -> Handler
                                                                                                                                       AllTeamFeatures)))))))))))))
                                                       :<|> (Named
                                                               "get-federation-status"
                                                               (QualifiedWithTag 'QLocal UserId
                                                                -> RemoteDomains
                                                                -> Handler FederationStatus)
                                                             :<|> ((Named
                                                                      "conversation-get-member"
                                                                      (ConvId
                                                                       -> UserId
                                                                       -> Handler (Maybe Member))
                                                                    :<|> (Named
                                                                            "conversation-accept-v2"
                                                                            (QualifiedWithTag
                                                                               'QLocal UserId
                                                                             -> Maybe ConnId
                                                                             -> ConvId
                                                                             -> Handler
                                                                                  Conversation)
                                                                          :<|> (Named
                                                                                  "conversation-block-unqualified"
                                                                                  (UserId
                                                                                   -> ConvId
                                                                                   -> Handler ())
                                                                                :<|> (Named
                                                                                        "conversation-block"
                                                                                        (QualifiedWithTag
                                                                                           'QLocal
                                                                                           UserId
                                                                                         -> Qualified
                                                                                              ConvId
                                                                                         -> Handler
                                                                                              ())
                                                                                      :<|> (Named
                                                                                              "conversation-unblock-unqualified"
                                                                                              (QualifiedWithTag
                                                                                                 'QLocal
                                                                                                 UserId
                                                                                               -> Maybe
                                                                                                    ConnId
                                                                                               -> ConvId
                                                                                               -> Handler
                                                                                                    Conversation)
                                                                                            :<|> (Named
                                                                                                    "conversation-unblock"
                                                                                                    (QualifiedWithTag
                                                                                                       'QLocal
                                                                                                       UserId
                                                                                                     -> Maybe
                                                                                                          ConnId
                                                                                                     -> Qualified
                                                                                                          ConvId
                                                                                                     -> Handler
                                                                                                          ())
                                                                                                  :<|> (Named
                                                                                                          "conversation-meta"
                                                                                                          (ConvId
                                                                                                           -> Handler
                                                                                                                ConversationMetadata)
                                                                                                        :<|> (Named
                                                                                                                "conversation-mls-one-to-one"
                                                                                                                (QualifiedWithTag
                                                                                                                   'QLocal
                                                                                                                   UserId
                                                                                                                 -> Qualified
                                                                                                                      UserId
                                                                                                                 -> Handler
                                                                                                                      Conversation)
                                                                                                              :<|> Named
                                                                                                                     "conversation-mls-one-to-one-established"
                                                                                                                     (QualifiedWithTag
                                                                                                                        'QLocal
                                                                                                                        UserId
                                                                                                                      -> Qualified
                                                                                                                           UserId
                                                                                                                      -> Handler
                                                                                                                           Bool)))))))))
                                                                   :<|> Named
                                                                          "get-conversations-by-user"
                                                                          (UserId
                                                                           -> Handler
                                                                                [EJPDConvInfo])))))))))))))
-> ((Named
       "on-conversation-created"
       (Domain -> ConversationCreated ConvId -> Handler EmptyResponse)
     :<|> (Named
             "get-conversations@v1"
             (Domain
              -> GetConversationsRequest -> Handler GetConversationsResponse)
           :<|> (Named
                   "get-conversations"
                   (Domain
                    -> GetConversationsRequest -> Handler GetConversationsResponseV2)
                 :<|> (Named
                         "leave-conversation"
                         (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                          -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                          -> Dict (HasAnnotation 'Remote "brig" "get-users-by-ids")
                          -> Dict (HasAnnotation 'Remote "brig" "api-version")
                          -> Domain
                          -> LeaveConversationRequest
                          -> Handler LeaveConversationResponse)
                       :<|> (Named
                               "send-message"
                               (Dict (HasAnnotation 'Remote "galley" "on-message-sent")
                                -> Dict (HasAnnotation 'Remote "brig" "get-user-clients")
                                -> Domain
                                -> ProteusMessageSendRequest
                                -> Handler MessageSendResponse)
                             :<|> (Named
                                     "update-conversation"
                                     (Dict
                                        (HasAnnotation 'Remote "galley" "on-conversation-updated")
                                      -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                                      -> Dict (HasAnnotation 'Remote "brig" "get-users-by-ids")
                                      -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                                      -> Domain
                                      -> ConversationUpdateRequest
                                      -> Handler ConversationUpdateResponse)
                                   :<|> (Named
                                           "mls-welcome"
                                           (Domain
                                            -> MLSWelcomeRequest -> Handler MLSWelcomeResponse)
                                         :<|> (Named
                                                 "send-mls-message"
                                                 (Dict
                                                    (HasAnnotation
                                                       'Remote "galley" "on-conversation-updated")
                                                  -> Dict
                                                       (HasAnnotation
                                                          'Remote "galley" "on-mls-message-sent")
                                                  -> Dict
                                                       (HasAnnotation
                                                          'Remote "galley" "send-mls-message")
                                                  -> Dict
                                                       (HasAnnotation
                                                          'Remote "brig" "get-mls-clients")
                                                  -> Domain
                                                  -> MLSMessageSendRequest
                                                  -> Handler MLSMessageResponse)
                                               :<|> (Named
                                                       "send-mls-commit-bundle"
                                                       (Dict
                                                          (HasAnnotation
                                                             'Remote "galley" "mls-welcome")
                                                        -> Dict
                                                             (HasAnnotation
                                                                'Remote
                                                                "galley"
                                                                "on-conversation-updated")
                                                        -> Dict
                                                             (HasAnnotation
                                                                'Remote
                                                                "galley"
                                                                "on-mls-message-sent")
                                                        -> Dict
                                                             (HasAnnotation
                                                                'Remote
                                                                "galley"
                                                                "send-mls-commit-bundle")
                                                        -> Dict
                                                             (HasAnnotation
                                                                'Remote "brig" "get-mls-clients")
                                                        -> Dict
                                                             (HasAnnotation
                                                                'Remote "brig" "get-users-by-ids")
                                                        -> Dict
                                                             (HasAnnotation
                                                                'Remote "brig" "api-version")
                                                        -> Domain
                                                        -> MLSMessageSendRequest
                                                        -> Handler MLSMessageResponse)
                                                     :<|> (Named
                                                             "query-group-info"
                                                             (Domain
                                                              -> GetGroupInfoRequest
                                                              -> Handler GetGroupInfoResponse)
                                                           :<|> (Named
                                                                   "update-typing-indicator"
                                                                   (Dict
                                                                      (HasAnnotation
                                                                         'Remote
                                                                         "galley"
                                                                         "on-typing-indicator-updated")
                                                                    -> Domain
                                                                    -> TypingDataUpdateRequest
                                                                    -> Handler
                                                                         TypingDataUpdateResponse)
                                                                 :<|> (Named
                                                                         "on-typing-indicator-updated"
                                                                         (Domain
                                                                          -> TypingDataUpdated
                                                                          -> Handler EmptyResponse)
                                                                       :<|> (Named
                                                                               "get-sub-conversation"
                                                                               (Domain
                                                                                -> GetSubConversationsRequest
                                                                                -> Handler
                                                                                     GetSubConversationsResponse)
                                                                             :<|> (Named
                                                                                     "delete-sub-conversation"
                                                                                     (Domain
                                                                                      -> DeleteSubConversationFedRequest
                                                                                      -> Handler
                                                                                           DeleteSubConversationResponse)
                                                                                   :<|> (Named
                                                                                           "leave-sub-conversation"
                                                                                           (Dict
                                                                                              (HasAnnotation
                                                                                                 'Remote
                                                                                                 "galley"
                                                                                                 "on-mls-message-sent")
                                                                                            -> Domain
                                                                                            -> LeaveSubConversationRequest
                                                                                            -> Handler
                                                                                                 LeaveSubConversationResponse)
                                                                                         :<|> (Named
                                                                                                 "get-one2one-conversation@v1"
                                                                                                 (Domain
                                                                                                  -> GetOne2OneConversationRequest
                                                                                                  -> Handler
                                                                                                       GetOne2OneConversationResponse)
                                                                                               :<|> (Named
                                                                                                       "get-one2one-conversation"
                                                                                                       (Domain
                                                                                                        -> GetOne2OneConversationRequest
                                                                                                        -> Handler
                                                                                                             GetOne2OneConversationResponseV2)
                                                                                                     :<|> (Named
                                                                                                             "on-client-removed"
                                                                                                             (Domain
                                                                                                              -> ClientRemovedRequest
                                                                                                              -> Handler
                                                                                                                   EmptyResponse)
                                                                                                           :<|> (Named
                                                                                                                   "on-message-sent"
                                                                                                                   (Domain
                                                                                                                    -> RemoteMessage
                                                                                                                         ConvId
                                                                                                                    -> Handler
                                                                                                                         EmptyResponse)
                                                                                                                 :<|> (Named
                                                                                                                         "on-mls-message-sent"
                                                                                                                         (Domain
                                                                                                                          -> RemoteMLSMessage
                                                                                                                          -> Handler
                                                                                                                               EmptyResponse)
                                                                                                                       :<|> (Named
                                                                                                                               (Versioned
                                                                                                                                  'V0
                                                                                                                                  "on-conversation-updated")
                                                                                                                               (Domain
                                                                                                                                -> ConversationUpdateV0
                                                                                                                                -> Handler
                                                                                                                                     EmptyResponse)
                                                                                                                             :<|> (Named
                                                                                                                                     "on-conversation-updated"
                                                                                                                                     (Domain
                                                                                                                                      -> ConversationUpdate
                                                                                                                                      -> Handler
                                                                                                                                           EmptyResponse)
                                                                                                                                   :<|> Named
                                                                                                                                          "on-user-deleted-conversations"
                                                                                                                                          (Domain
                                                                                                                                           -> UserDeletedConversationsNotification
                                                                                                                                           -> Handler
                                                                                                                                                EmptyResponse)))))))))))))))))))))))
    :<|> Tagged Handler Application)
-> (Named "status" (Handler ())
    :<|> (Named
            "delete-user"
            (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
             -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
             -> QualifiedWithTag 'QLocal UserId
             -> Maybe ConnId
             -> Handler ())
          :<|> (Named
                  "connect"
                  (Dict (HasAnnotation 'Remote "brig" "api-version")
                   -> Dict (HasAnnotation 'Remote "galley" "on-conversation-created")
                   -> Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                   -> QualifiedWithTag 'QLocal UserId
                   -> Maybe ConnId
                   -> Connect
                   -> Handler (ResponseForExistedCreated Conversation))
                :<|> (Named
                        "get-conversation-clients" (GroupId -> Handler ClientList)
                      :<|> (Named
                              "guard-legalhold-policy-conflicts"
                              (GuardLegalholdPolicyConflicts -> Handler ())
                            :<|> ((TeamId
                                   -> Named "set-team-legalhold-whitelisted" (Handler ())
                                      :<|> (Named "unset-team-legalhold-whitelisted" (Handler ())
                                            :<|> Named
                                                   "get-team-legalhold-whitelisted" (Handler Bool)))
                                  :<|> ((TeamId
                                         -> Named "get-team-internal" (Handler TeamData)
                                            :<|> (Named
                                                    "create-binding-team"
                                                    (UserId -> BindingNewTeam -> Handler TeamId)
                                                  :<|> (Named
                                                          "delete-binding-team" (Bool -> Handler ())
                                                        :<|> (Named
                                                                "get-team-name" (Handler TeamName)
                                                              :<|> (Named
                                                                      "update-team-status"
                                                                      (TeamStatusUpdate
                                                                       -> Handler ())
                                                                    :<|> ((Named
                                                                             "unchecked-add-team-member"
                                                                             (NewTeamMember
                                                                              -> Handler ())
                                                                           :<|> (Named
                                                                                   "unchecked-get-team-members"
                                                                                   (Maybe
                                                                                      (Range
                                                                                         1
                                                                                         HardTruncationLimit
                                                                                         Int32)
                                                                                    -> Handler
                                                                                         TeamMemberList)
                                                                                 :<|> (Named
                                                                                         "unchecked-get-team-member"
                                                                                         (UserId
                                                                                          -> Handler
                                                                                               TeamMember)
                                                                                       :<|> (Named
                                                                                               "can-user-join-team"
                                                                                               (Handler
                                                                                                  ())
                                                                                             :<|> Named
                                                                                                    "unchecked-update-team-member"
                                                                                                    (NewTeamMember
                                                                                                     -> Handler
                                                                                                          ())))))
                                                                          :<|> (Named
                                                                                  "user-is-team-owner"
                                                                                  (UserId
                                                                                   -> Handler ())
                                                                                :<|> (Named
                                                                                        "get-search-visibility-internal"
                                                                                        (Handler
                                                                                           TeamSearchVisibilityView)
                                                                                      :<|> Named
                                                                                             "set-search-visibility-internal"
                                                                                             (TeamSearchVisibilityView
                                                                                              -> Handler
                                                                                                   ())))))))))
                                        :<|> ((Named
                                                 "get-team-members"
                                                 (UserId -> Handler TeamMemberList)
                                               :<|> (Named "get-team-id" (UserId -> Handler TeamId)
                                                     :<|> (Named
                                                             "test-get-clients"
                                                             (UserId -> Handler [ClientId])
                                                           :<|> (Named
                                                                   "test-add-client"
                                                                   (UserId
                                                                    -> ClientId -> Handler ())
                                                                 :<|> (Named
                                                                         "test-delete-client"
                                                                         (UserId
                                                                          -> ClientId -> Handler ())
                                                                       :<|> (Named
                                                                               "add-service"
                                                                               (Service
                                                                                -> Handler ())
                                                                             :<|> (Named
                                                                                     "delete-service"
                                                                                     (ServiceRef
                                                                                      -> Handler ())
                                                                                   :<|> (Named
                                                                                           "i-add-bot"
                                                                                           (QualifiedWithTag
                                                                                              'QLocal
                                                                                              UserId
                                                                                            -> ConnId
                                                                                            -> AddBot
                                                                                            -> Handler
                                                                                                 Event)
                                                                                         :<|> (Named
                                                                                                 "delete-bot"
                                                                                                 (QualifiedWithTag
                                                                                                    'QLocal
                                                                                                    UserId
                                                                                                  -> Maybe
                                                                                                       ConnId
                                                                                                  -> RemoveBot
                                                                                                  -> Handler
                                                                                                       (UpdateResult
                                                                                                          Event))
                                                                                               :<|> (Named
                                                                                                       "put-custom-backend"
                                                                                                       (Domain
                                                                                                        -> CustomBackend
                                                                                                        -> Handler
                                                                                                             ())
                                                                                                     :<|> Named
                                                                                                            "delete-custom-backend"
                                                                                                            (Domain
                                                                                                             -> Handler
                                                                                                                  ())))))))))))
                                              :<|> (Named
                                                      "upsert-one2one"
                                                      (UpsertOne2OneConversationRequest
                                                       -> Handler ())
                                                    :<|> ((((Named
                                                               '("iget", LegalholdConfig)
                                                               (TeamId
                                                                -> Handler
                                                                     (LockableFeature
                                                                        LegalholdConfig))
                                                             :<|> (Named
                                                                     '("iput", LegalholdConfig)
                                                                     (TeamId
                                                                      -> Feature LegalholdConfig
                                                                      -> Handler
                                                                           (LockableFeature
                                                                              LegalholdConfig))
                                                                   :<|> Named
                                                                          '("ipatch",
                                                                            LegalholdConfig)
                                                                          (TeamId
                                                                           -> LockableFeaturePatch
                                                                                LegalholdConfig
                                                                           -> Handler
                                                                                (LockableFeature
                                                                                   LegalholdConfig))))
                                                            :<|> ((Named
                                                                     '("iget", SSOConfig)
                                                                     (TeamId
                                                                      -> Handler
                                                                           (LockableFeature
                                                                              SSOConfig))
                                                                   :<|> (Named
                                                                           '("iput", SSOConfig)
                                                                           (TeamId
                                                                            -> Feature SSOConfig
                                                                            -> Handler
                                                                                 (LockableFeature
                                                                                    SSOConfig))
                                                                         :<|> Named
                                                                                '("ipatch",
                                                                                  SSOConfig)
                                                                                (TeamId
                                                                                 -> LockableFeaturePatch
                                                                                      SSOConfig
                                                                                 -> Handler
                                                                                      (LockableFeature
                                                                                         SSOConfig))))
                                                                  :<|> ((Named
                                                                           '("iget",
                                                                             SearchVisibilityAvailableConfig)
                                                                           (TeamId
                                                                            -> Handler
                                                                                 (LockableFeature
                                                                                    SearchVisibilityAvailableConfig))
                                                                         :<|> (Named
                                                                                 '("iput",
                                                                                   SearchVisibilityAvailableConfig)
                                                                                 (TeamId
                                                                                  -> Feature
                                                                                       SearchVisibilityAvailableConfig
                                                                                  -> Handler
                                                                                       (LockableFeature
                                                                                          SearchVisibilityAvailableConfig))
                                                                               :<|> Named
                                                                                      '("ipatch",
                                                                                        SearchVisibilityAvailableConfig)
                                                                                      (TeamId
                                                                                       -> LockableFeaturePatch
                                                                                            SearchVisibilityAvailableConfig
                                                                                       -> Handler
                                                                                            (LockableFeature
                                                                                               SearchVisibilityAvailableConfig))))
                                                                        :<|> ((Named
                                                                                 '("iget",
                                                                                   SearchVisibilityInboundConfig)
                                                                                 (TeamId
                                                                                  -> Handler
                                                                                       (LockableFeature
                                                                                          SearchVisibilityInboundConfig))
                                                                               :<|> (Named
                                                                                       '("iput",
                                                                                         SearchVisibilityInboundConfig)
                                                                                       (TeamId
                                                                                        -> Feature
                                                                                             SearchVisibilityInboundConfig
                                                                                        -> Handler
                                                                                             (LockableFeature
                                                                                                SearchVisibilityInboundConfig))
                                                                                     :<|> Named
                                                                                            '("ipatch",
                                                                                              SearchVisibilityInboundConfig)
                                                                                            (TeamId
                                                                                             -> LockableFeaturePatch
                                                                                                  SearchVisibilityInboundConfig
                                                                                             -> Handler
                                                                                                  (LockableFeature
                                                                                                     SearchVisibilityInboundConfig))))
                                                                              :<|> ((Named
                                                                                       '("iget",
                                                                                         ValidateSAMLEmailsConfig)
                                                                                       (TeamId
                                                                                        -> Handler
                                                                                             (LockableFeature
                                                                                                ValidateSAMLEmailsConfig))
                                                                                     :<|> (Named
                                                                                             '("iput",
                                                                                               ValidateSAMLEmailsConfig)
                                                                                             (TeamId
                                                                                              -> Feature
                                                                                                   ValidateSAMLEmailsConfig
                                                                                              -> Handler
                                                                                                   (LockableFeature
                                                                                                      ValidateSAMLEmailsConfig))
                                                                                           :<|> Named
                                                                                                  '("ipatch",
                                                                                                    ValidateSAMLEmailsConfig)
                                                                                                  (TeamId
                                                                                                   -> LockableFeaturePatch
                                                                                                        ValidateSAMLEmailsConfig
                                                                                                   -> Handler
                                                                                                        (LockableFeature
                                                                                                           ValidateSAMLEmailsConfig))))
                                                                                    :<|> ((Named
                                                                                             '("iget",
                                                                                               DigitalSignaturesConfig)
                                                                                             (TeamId
                                                                                              -> Handler
                                                                                                   (LockableFeature
                                                                                                      DigitalSignaturesConfig))
                                                                                           :<|> (Named
                                                                                                   '("iput",
                                                                                                     DigitalSignaturesConfig)
                                                                                                   (TeamId
                                                                                                    -> Feature
                                                                                                         DigitalSignaturesConfig
                                                                                                    -> Handler
                                                                                                         (LockableFeature
                                                                                                            DigitalSignaturesConfig))
                                                                                                 :<|> Named
                                                                                                        '("ipatch",
                                                                                                          DigitalSignaturesConfig)
                                                                                                        (TeamId
                                                                                                         -> LockableFeaturePatch
                                                                                                              DigitalSignaturesConfig
                                                                                                         -> Handler
                                                                                                              (LockableFeature
                                                                                                                 DigitalSignaturesConfig))))
                                                                                          :<|> ((Named
                                                                                                   '("iget",
                                                                                                     AppLockConfig)
                                                                                                   (TeamId
                                                                                                    -> Handler
                                                                                                         (LockableFeature
                                                                                                            AppLockConfig))
                                                                                                 :<|> (Named
                                                                                                         '("iput",
                                                                                                           AppLockConfig)
                                                                                                         (TeamId
                                                                                                          -> Feature
                                                                                                               AppLockConfig
                                                                                                          -> Handler
                                                                                                               (LockableFeature
                                                                                                                  AppLockConfig))
                                                                                                       :<|> Named
                                                                                                              '("ipatch",
                                                                                                                AppLockConfig)
                                                                                                              (TeamId
                                                                                                               -> LockableFeaturePatch
                                                                                                                    AppLockConfig
                                                                                                               -> Handler
                                                                                                                    (LockableFeature
                                                                                                                       AppLockConfig))))
                                                                                                :<|> ((Named
                                                                                                         '("iget",
                                                                                                           FileSharingConfig)
                                                                                                         (TeamId
                                                                                                          -> Handler
                                                                                                               (LockableFeature
                                                                                                                  FileSharingConfig))
                                                                                                       :<|> (Named
                                                                                                               '("iput",
                                                                                                                 FileSharingConfig)
                                                                                                               (TeamId
                                                                                                                -> Feature
                                                                                                                     FileSharingConfig
                                                                                                                -> Handler
                                                                                                                     (LockableFeature
                                                                                                                        FileSharingConfig))
                                                                                                             :<|> Named
                                                                                                                    '("ipatch",
                                                                                                                      FileSharingConfig)
                                                                                                                    (TeamId
                                                                                                                     -> LockableFeaturePatch
                                                                                                                          FileSharingConfig
                                                                                                                     -> Handler
                                                                                                                          (LockableFeature
                                                                                                                             FileSharingConfig))))
                                                                                                      :<|> (Named
                                                                                                              '("iget",
                                                                                                                ClassifiedDomainsConfig)
                                                                                                              (TeamId
                                                                                                               -> Handler
                                                                                                                    (LockableFeature
                                                                                                                       ClassifiedDomainsConfig))
                                                                                                            :<|> ((Named
                                                                                                                     '("iget",
                                                                                                                       ConferenceCallingConfig)
                                                                                                                     (TeamId
                                                                                                                      -> Handler
                                                                                                                           (LockableFeature
                                                                                                                              ConferenceCallingConfig))
                                                                                                                   :<|> (Named
                                                                                                                           '("iput",
                                                                                                                             ConferenceCallingConfig)
                                                                                                                           (TeamId
                                                                                                                            -> Feature
                                                                                                                                 ConferenceCallingConfig
                                                                                                                            -> Handler
                                                                                                                                 (LockableFeature
                                                                                                                                    ConferenceCallingConfig))
                                                                                                                         :<|> Named
                                                                                                                                '("ipatch",
                                                                                                                                  ConferenceCallingConfig)
                                                                                                                                (TeamId
                                                                                                                                 -> LockableFeaturePatch
                                                                                                                                      ConferenceCallingConfig
                                                                                                                                 -> Handler
                                                                                                                                      (LockableFeature
                                                                                                                                         ConferenceCallingConfig))))
                                                                                                                  :<|> ((Named
                                                                                                                           '("iget",
                                                                                                                             SelfDeletingMessagesConfig)
                                                                                                                           (TeamId
                                                                                                                            -> Handler
                                                                                                                                 (LockableFeature
                                                                                                                                    SelfDeletingMessagesConfig))
                                                                                                                         :<|> (Named
                                                                                                                                 '("iput",
                                                                                                                                   SelfDeletingMessagesConfig)
                                                                                                                                 (TeamId
                                                                                                                                  -> Feature
                                                                                                                                       SelfDeletingMessagesConfig
                                                                                                                                  -> Handler
                                                                                                                                       (LockableFeature
                                                                                                                                          SelfDeletingMessagesConfig))
                                                                                                                               :<|> Named
                                                                                                                                      '("ipatch",
                                                                                                                                        SelfDeletingMessagesConfig)
                                                                                                                                      (TeamId
                                                                                                                                       -> LockableFeaturePatch
                                                                                                                                            SelfDeletingMessagesConfig
                                                                                                                                       -> Handler
                                                                                                                                            (LockableFeature
                                                                                                                                               SelfDeletingMessagesConfig))))
                                                                                                                        :<|> ((Named
                                                                                                                                 '("iget",
                                                                                                                                   GuestLinksConfig)
                                                                                                                                 (TeamId
                                                                                                                                  -> Handler
                                                                                                                                       (LockableFeature
                                                                                                                                          GuestLinksConfig))
                                                                                                                               :<|> (Named
                                                                                                                                       '("iput",
                                                                                                                                         GuestLinksConfig)
                                                                                                                                       (TeamId
                                                                                                                                        -> Feature
                                                                                                                                             GuestLinksConfig
                                                                                                                                        -> Handler
                                                                                                                                             (LockableFeature
                                                                                                                                                GuestLinksConfig))
                                                                                                                                     :<|> Named
                                                                                                                                            '("ipatch",
                                                                                                                                              GuestLinksConfig)
                                                                                                                                            (TeamId
                                                                                                                                             -> LockableFeaturePatch
                                                                                                                                                  GuestLinksConfig
                                                                                                                                             -> Handler
                                                                                                                                                  (LockableFeature
                                                                                                                                                     GuestLinksConfig))))
                                                                                                                              :<|> ((Named
                                                                                                                                       '("iget",
                                                                                                                                         SndFactorPasswordChallengeConfig)
                                                                                                                                       (TeamId
                                                                                                                                        -> Handler
                                                                                                                                             (LockableFeature
                                                                                                                                                SndFactorPasswordChallengeConfig))
                                                                                                                                     :<|> (Named
                                                                                                                                             '("iput",
                                                                                                                                               SndFactorPasswordChallengeConfig)
                                                                                                                                             (TeamId
                                                                                                                                              -> Feature
                                                                                                                                                   SndFactorPasswordChallengeConfig
                                                                                                                                              -> Handler
                                                                                                                                                   (LockableFeature
                                                                                                                                                      SndFactorPasswordChallengeConfig))
                                                                                                                                           :<|> Named
                                                                                                                                                  '("ipatch",
                                                                                                                                                    SndFactorPasswordChallengeConfig)
                                                                                                                                                  (TeamId
                                                                                                                                                   -> LockableFeaturePatch
                                                                                                                                                        SndFactorPasswordChallengeConfig
                                                                                                                                                   -> Handler
                                                                                                                                                        (LockableFeature
                                                                                                                                                           SndFactorPasswordChallengeConfig))))
                                                                                                                                    :<|> ((Named
                                                                                                                                             '("iget",
                                                                                                                                               MLSConfig)
                                                                                                                                             (TeamId
                                                                                                                                              -> Handler
                                                                                                                                                   (LockableFeature
                                                                                                                                                      MLSConfig))
                                                                                                                                           :<|> (Named
                                                                                                                                                   '("iput",
                                                                                                                                                     MLSConfig)
                                                                                                                                                   (TeamId
                                                                                                                                                    -> Feature
                                                                                                                                                         MLSConfig
                                                                                                                                                    -> Handler
                                                                                                                                                         (LockableFeature
                                                                                                                                                            MLSConfig))
                                                                                                                                                 :<|> Named
                                                                                                                                                        '("ipatch",
                                                                                                                                                          MLSConfig)
                                                                                                                                                        (TeamId
                                                                                                                                                         -> LockableFeaturePatch
                                                                                                                                                              MLSConfig
                                                                                                                                                         -> Handler
                                                                                                                                                              (LockableFeature
                                                                                                                                                                 MLSConfig))))
                                                                                                                                          :<|> ((Named
                                                                                                                                                   '("iget",
                                                                                                                                                     ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                   (TeamId
                                                                                                                                                    -> Handler
                                                                                                                                                         (LockableFeature
                                                                                                                                                            ExposeInvitationURLsToTeamAdminConfig))
                                                                                                                                                 :<|> (Named
                                                                                                                                                         '("iput",
                                                                                                                                                           ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                         (TeamId
                                                                                                                                                          -> Feature
                                                                                                                                                               ExposeInvitationURLsToTeamAdminConfig
                                                                                                                                                          -> Handler
                                                                                                                                                               (LockableFeature
                                                                                                                                                                  ExposeInvitationURLsToTeamAdminConfig))
                                                                                                                                                       :<|> Named
                                                                                                                                                              '("ipatch",
                                                                                                                                                                ExposeInvitationURLsToTeamAdminConfig)
                                                                                                                                                              (TeamId
                                                                                                                                                               -> LockableFeaturePatch
                                                                                                                                                                    ExposeInvitationURLsToTeamAdminConfig
                                                                                                                                                               -> Handler
                                                                                                                                                                    (LockableFeature
                                                                                                                                                                       ExposeInvitationURLsToTeamAdminConfig))))
                                                                                                                                                :<|> ((Named
                                                                                                                                                         '("iget",
                                                                                                                                                           OutlookCalIntegrationConfig)
                                                                                                                                                         (TeamId
                                                                                                                                                          -> Handler
                                                                                                                                                               (LockableFeature
                                                                                                                                                                  OutlookCalIntegrationConfig))
                                                                                                                                                       :<|> (Named
                                                                                                                                                               '("iput",
                                                                                                                                                                 OutlookCalIntegrationConfig)
                                                                                                                                                               (TeamId
                                                                                                                                                                -> Feature
                                                                                                                                                                     OutlookCalIntegrationConfig
                                                                                                                                                                -> Handler
                                                                                                                                                                     (LockableFeature
                                                                                                                                                                        OutlookCalIntegrationConfig))
                                                                                                                                                             :<|> Named
                                                                                                                                                                    '("ipatch",
                                                                                                                                                                      OutlookCalIntegrationConfig)
                                                                                                                                                                    (TeamId
                                                                                                                                                                     -> LockableFeaturePatch
                                                                                                                                                                          OutlookCalIntegrationConfig
                                                                                                                                                                     -> Handler
                                                                                                                                                                          (LockableFeature
                                                                                                                                                                             OutlookCalIntegrationConfig))))
                                                                                                                                                      :<|> ((Named
                                                                                                                                                               '("iget",
                                                                                                                                                                 MlsE2EIdConfig)
                                                                                                                                                               (TeamId
                                                                                                                                                                -> Handler
                                                                                                                                                                     (LockableFeature
                                                                                                                                                                        MlsE2EIdConfig))
                                                                                                                                                             :<|> (Named
                                                                                                                                                                     '("iput",
                                                                                                                                                                       MlsE2EIdConfig)
                                                                                                                                                                     (TeamId
                                                                                                                                                                      -> Feature
                                                                                                                                                                           MlsE2EIdConfig
                                                                                                                                                                      -> Handler
                                                                                                                                                                           (LockableFeature
                                                                                                                                                                              MlsE2EIdConfig))
                                                                                                                                                                   :<|> Named
                                                                                                                                                                          '("ipatch",
                                                                                                                                                                            MlsE2EIdConfig)
                                                                                                                                                                          (TeamId
                                                                                                                                                                           -> LockableFeaturePatch
                                                                                                                                                                                MlsE2EIdConfig
                                                                                                                                                                           -> Handler
                                                                                                                                                                                (LockableFeature
                                                                                                                                                                                   MlsE2EIdConfig))))
                                                                                                                                                            :<|> ((Named
                                                                                                                                                                     '("iget",
                                                                                                                                                                       MlsMigrationConfig)
                                                                                                                                                                     (TeamId
                                                                                                                                                                      -> Handler
                                                                                                                                                                           (LockableFeature
                                                                                                                                                                              MlsMigrationConfig))
                                                                                                                                                                   :<|> (Named
                                                                                                                                                                           '("iput",
                                                                                                                                                                             MlsMigrationConfig)
                                                                                                                                                                           (TeamId
                                                                                                                                                                            -> Feature
                                                                                                                                                                                 MlsMigrationConfig
                                                                                                                                                                            -> Handler
                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                    MlsMigrationConfig))
                                                                                                                                                                         :<|> Named
                                                                                                                                                                                '("ipatch",
                                                                                                                                                                                  MlsMigrationConfig)
                                                                                                                                                                                (TeamId
                                                                                                                                                                                 -> LockableFeaturePatch
                                                                                                                                                                                      MlsMigrationConfig
                                                                                                                                                                                 -> Handler
                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                         MlsMigrationConfig))))
                                                                                                                                                                  :<|> ((Named
                                                                                                                                                                           '("iget",
                                                                                                                                                                             EnforceFileDownloadLocationConfig)
                                                                                                                                                                           (TeamId
                                                                                                                                                                            -> Handler
                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                    EnforceFileDownloadLocationConfig))
                                                                                                                                                                         :<|> (Named
                                                                                                                                                                                 '("iput",
                                                                                                                                                                                   EnforceFileDownloadLocationConfig)
                                                                                                                                                                                 (TeamId
                                                                                                                                                                                  -> Feature
                                                                                                                                                                                       EnforceFileDownloadLocationConfig
                                                                                                                                                                                  -> Handler
                                                                                                                                                                                       (LockableFeature
                                                                                                                                                                                          EnforceFileDownloadLocationConfig))
                                                                                                                                                                               :<|> Named
                                                                                                                                                                                      '("ipatch",
                                                                                                                                                                                        EnforceFileDownloadLocationConfig)
                                                                                                                                                                                      (TeamId
                                                                                                                                                                                       -> LockableFeaturePatch
                                                                                                                                                                                            EnforceFileDownloadLocationConfig
                                                                                                                                                                                       -> Handler
                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                               EnforceFileDownloadLocationConfig))))
                                                                                                                                                                        :<|> (Named
                                                                                                                                                                                '("iget",
                                                                                                                                                                                  LimitedEventFanoutConfig)
                                                                                                                                                                                (TeamId
                                                                                                                                                                                 -> Handler
                                                                                                                                                                                      (LockableFeature
                                                                                                                                                                                         LimitedEventFanoutConfig))
                                                                                                                                                                              :<|> (Named
                                                                                                                                                                                      '("iput",
                                                                                                                                                                                        LimitedEventFanoutConfig)
                                                                                                                                                                                      (TeamId
                                                                                                                                                                                       -> Feature
                                                                                                                                                                                            LimitedEventFanoutConfig
                                                                                                                                                                                       -> Handler
                                                                                                                                                                                            (LockableFeature
                                                                                                                                                                                               LimitedEventFanoutConfig))
                                                                                                                                                                                    :<|> Named
                                                                                                                                                                                           '("ipatch",
                                                                                                                                                                                             LimitedEventFanoutConfig)
                                                                                                                                                                                           (TeamId
                                                                                                                                                                                            -> LockableFeaturePatch
                                                                                                                                                                                                 LimitedEventFanoutConfig
                                                                                                                                                                                            -> Handler
                                                                                                                                                                                                 (LockableFeature
                                                                                                                                                                                                    LimitedEventFanoutConfig)))))))))))))))))))))))
                                                           :<|> (Named
                                                                   '("ilock", FileSharingConfig)
                                                                   (TeamId
                                                                    -> LockStatus
                                                                    -> Handler LockStatusResponse)
                                                                 :<|> (Named
                                                                         '("ilock",
                                                                           ConferenceCallingConfig)
                                                                         (TeamId
                                                                          -> LockStatus
                                                                          -> Handler
                                                                               LockStatusResponse)
                                                                       :<|> (Named
                                                                               '("ilock",
                                                                                 SelfDeletingMessagesConfig)
                                                                               (TeamId
                                                                                -> LockStatus
                                                                                -> Handler
                                                                                     LockStatusResponse)
                                                                             :<|> (Named
                                                                                     '("ilock",
                                                                                       GuestLinksConfig)
                                                                                     (TeamId
                                                                                      -> LockStatus
                                                                                      -> Handler
                                                                                           LockStatusResponse)
                                                                                   :<|> (Named
                                                                                           '("ilock",
                                                                                             SndFactorPasswordChallengeConfig)
                                                                                           (TeamId
                                                                                            -> LockStatus
                                                                                            -> Handler
                                                                                                 LockStatusResponse)
                                                                                         :<|> (Named
                                                                                                 '("ilock",
                                                                                                   MLSConfig)
                                                                                                 (TeamId
                                                                                                  -> LockStatus
                                                                                                  -> Handler
                                                                                                       LockStatusResponse)
                                                                                               :<|> (Named
                                                                                                       '("ilock",
                                                                                                         OutlookCalIntegrationConfig)
                                                                                                       (TeamId
                                                                                                        -> LockStatus
                                                                                                        -> Handler
                                                                                                             LockStatusResponse)
                                                                                                     :<|> (Named
                                                                                                             '("ilock",
                                                                                                               MlsE2EIdConfig)
                                                                                                             (TeamId
                                                                                                              -> LockStatus
                                                                                                              -> Handler
                                                                                                                   LockStatusResponse)
                                                                                                           :<|> (Named
                                                                                                                   '("ilock",
                                                                                                                     MlsMigrationConfig)
                                                                                                                   (TeamId
                                                                                                                    -> LockStatus
                                                                                                                    -> Handler
                                                                                                                         LockStatusResponse)
                                                                                                                 :<|> (Named
                                                                                                                         '("ilock",
                                                                                                                           EnforceFileDownloadLocationConfig)
                                                                                                                         (TeamId
                                                                                                                          -> LockStatus
                                                                                                                          -> Handler
                                                                                                                               LockStatusResponse)
                                                                                                                       :<|> (Named
                                                                                                                               '("igetmulti",
                                                                                                                                 SearchVisibilityInboundConfig)
                                                                                                                               (TeamFeatureNoConfigMultiRequest
                                                                                                                                -> Handler
                                                                                                                                     (TeamFeatureNoConfigMultiResponse
                                                                                                                                        SearchVisibilityInboundConfig))
                                                                                                                             :<|> Named
                                                                                                                                    "feature-configs-internal"
                                                                                                                                    (Maybe
                                                                                                                                       UserId
                                                                                                                                     -> Handler
                                                                                                                                          AllTeamFeatures)))))))))))))
                                                          :<|> (Named
                                                                  "get-federation-status"
                                                                  (QualifiedWithTag 'QLocal UserId
                                                                   -> RemoteDomains
                                                                   -> Handler FederationStatus)
                                                                :<|> ((Named
                                                                         "conversation-get-member"
                                                                         (ConvId
                                                                          -> UserId
                                                                          -> Handler (Maybe Member))
                                                                       :<|> (Named
                                                                               "conversation-accept-v2"
                                                                               (QualifiedWithTag
                                                                                  'QLocal UserId
                                                                                -> Maybe ConnId
                                                                                -> ConvId
                                                                                -> Handler
                                                                                     Conversation)
                                                                             :<|> (Named
                                                                                     "conversation-block-unqualified"
                                                                                     (UserId
                                                                                      -> ConvId
                                                                                      -> Handler ())
                                                                                   :<|> (Named
                                                                                           "conversation-block"
                                                                                           (QualifiedWithTag
                                                                                              'QLocal
                                                                                              UserId
                                                                                            -> Qualified
                                                                                                 ConvId
                                                                                            -> Handler
                                                                                                 ())
                                                                                         :<|> (Named
                                                                                                 "conversation-unblock-unqualified"
                                                                                                 (QualifiedWithTag
                                                                                                    'QLocal
                                                                                                    UserId
                                                                                                  -> Maybe
                                                                                                       ConnId
                                                                                                  -> ConvId
                                                                                                  -> Handler
                                                                                                       Conversation)
                                                                                               :<|> (Named
                                                                                                       "conversation-unblock"
                                                                                                       (QualifiedWithTag
                                                                                                          'QLocal
                                                                                                          UserId
                                                                                                        -> Maybe
                                                                                                             ConnId
                                                                                                        -> Qualified
                                                                                                             ConvId
                                                                                                        -> Handler
                                                                                                             ())
                                                                                                     :<|> (Named
                                                                                                             "conversation-meta"
                                                                                                             (ConvId
                                                                                                              -> Handler
                                                                                                                   ConversationMetadata)
                                                                                                           :<|> (Named
                                                                                                                   "conversation-mls-one-to-one"
                                                                                                                   (QualifiedWithTag
                                                                                                                      'QLocal
                                                                                                                      UserId
                                                                                                                    -> Qualified
                                                                                                                         UserId
                                                                                                                    -> Handler
                                                                                                                         Conversation)
                                                                                                                 :<|> Named
                                                                                                                        "conversation-mls-one-to-one-established"
                                                                                                                        (QualifiedWithTag
                                                                                                                           'QLocal
                                                                                                                           UserId
                                                                                                                         -> Qualified
                                                                                                                              UserId
                                                                                                                         -> Handler
                                                                                                                              Bool)))))))))
                                                                      :<|> Named
                                                                             "get-conversations-by-user"
                                                                             (UserId
                                                                              -> Handler
                                                                                   [EJPDConvInfo])))))))))))))
   :<|> ((Named
            "on-conversation-created"
            (Domain -> ConversationCreated ConvId -> Handler EmptyResponse)
          :<|> (Named
                  "get-conversations@v1"
                  (Domain
                   -> GetConversationsRequest -> Handler GetConversationsResponse)
                :<|> (Named
                        "get-conversations"
                        (Domain
                         -> GetConversationsRequest -> Handler GetConversationsResponseV2)
                      :<|> (Named
                              "leave-conversation"
                              (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                               -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                               -> Dict (HasAnnotation 'Remote "brig" "get-users-by-ids")
                               -> Dict (HasAnnotation 'Remote "brig" "api-version")
                               -> Domain
                               -> LeaveConversationRequest
                               -> Handler LeaveConversationResponse)
                            :<|> (Named
                                    "send-message"
                                    (Dict (HasAnnotation 'Remote "galley" "on-message-sent")
                                     -> Dict (HasAnnotation 'Remote "brig" "get-user-clients")
                                     -> Domain
                                     -> ProteusMessageSendRequest
                                     -> Handler MessageSendResponse)
                                  :<|> (Named
                                          "update-conversation"
                                          (Dict
                                             (HasAnnotation
                                                'Remote "galley" "on-conversation-updated")
                                           -> Dict
                                                (HasAnnotation
                                                   'Remote "galley" "on-mls-message-sent")
                                           -> Dict (HasAnnotation 'Remote "brig" "get-users-by-ids")
                                           -> Dict
                                                (HasAnnotation
                                                   'Remote "galley" "on-mls-message-sent")
                                           -> Domain
                                           -> ConversationUpdateRequest
                                           -> Handler ConversationUpdateResponse)
                                        :<|> (Named
                                                "mls-welcome"
                                                (Domain
                                                 -> MLSWelcomeRequest -> Handler MLSWelcomeResponse)
                                              :<|> (Named
                                                      "send-mls-message"
                                                      (Dict
                                                         (HasAnnotation
                                                            'Remote
                                                            "galley"
                                                            "on-conversation-updated")
                                                       -> Dict
                                                            (HasAnnotation
                                                               'Remote
                                                               "galley"
                                                               "on-mls-message-sent")
                                                       -> Dict
                                                            (HasAnnotation
                                                               'Remote "galley" "send-mls-message")
                                                       -> Dict
                                                            (HasAnnotation
                                                               'Remote "brig" "get-mls-clients")
                                                       -> Domain
                                                       -> MLSMessageSendRequest
                                                       -> Handler MLSMessageResponse)
                                                    :<|> (Named
                                                            "send-mls-commit-bundle"
                                                            (Dict
                                                               (HasAnnotation
                                                                  'Remote "galley" "mls-welcome")
                                                             -> Dict
                                                                  (HasAnnotation
                                                                     'Remote
                                                                     "galley"
                                                                     "on-conversation-updated")
                                                             -> Dict
                                                                  (HasAnnotation
                                                                     'Remote
                                                                     "galley"
                                                                     "on-mls-message-sent")
                                                             -> Dict
                                                                  (HasAnnotation
                                                                     'Remote
                                                                     "galley"
                                                                     "send-mls-commit-bundle")
                                                             -> Dict
                                                                  (HasAnnotation
                                                                     'Remote
                                                                     "brig"
                                                                     "get-mls-clients")
                                                             -> Dict
                                                                  (HasAnnotation
                                                                     'Remote
                                                                     "brig"
                                                                     "get-users-by-ids")
                                                             -> Dict
                                                                  (HasAnnotation
                                                                     'Remote "brig" "api-version")
                                                             -> Domain
                                                             -> MLSMessageSendRequest
                                                             -> Handler MLSMessageResponse)
                                                          :<|> (Named
                                                                  "query-group-info"
                                                                  (Domain
                                                                   -> GetGroupInfoRequest
                                                                   -> Handler GetGroupInfoResponse)
                                                                :<|> (Named
                                                                        "update-typing-indicator"
                                                                        (Dict
                                                                           (HasAnnotation
                                                                              'Remote
                                                                              "galley"
                                                                              "on-typing-indicator-updated")
                                                                         -> Domain
                                                                         -> TypingDataUpdateRequest
                                                                         -> Handler
                                                                              TypingDataUpdateResponse)
                                                                      :<|> (Named
                                                                              "on-typing-indicator-updated"
                                                                              (Domain
                                                                               -> TypingDataUpdated
                                                                               -> Handler
                                                                                    EmptyResponse)
                                                                            :<|> (Named
                                                                                    "get-sub-conversation"
                                                                                    (Domain
                                                                                     -> GetSubConversationsRequest
                                                                                     -> Handler
                                                                                          GetSubConversationsResponse)
                                                                                  :<|> (Named
                                                                                          "delete-sub-conversation"
                                                                                          (Domain
                                                                                           -> DeleteSubConversationFedRequest
                                                                                           -> Handler
                                                                                                DeleteSubConversationResponse)
                                                                                        :<|> (Named
                                                                                                "leave-sub-conversation"
                                                                                                (Dict
                                                                                                   (HasAnnotation
                                                                                                      'Remote
                                                                                                      "galley"
                                                                                                      "on-mls-message-sent")
                                                                                                 -> Domain
                                                                                                 -> LeaveSubConversationRequest
                                                                                                 -> Handler
                                                                                                      LeaveSubConversationResponse)
                                                                                              :<|> (Named
                                                                                                      "get-one2one-conversation@v1"
                                                                                                      (Domain
                                                                                                       -> GetOne2OneConversationRequest
                                                                                                       -> Handler
                                                                                                            GetOne2OneConversationResponse)
                                                                                                    :<|> (Named
                                                                                                            "get-one2one-conversation"
                                                                                                            (Domain
                                                                                                             -> GetOne2OneConversationRequest
                                                                                                             -> Handler
                                                                                                                  GetOne2OneConversationResponseV2)
                                                                                                          :<|> (Named
                                                                                                                  "on-client-removed"
                                                                                                                  (Domain
                                                                                                                   -> ClientRemovedRequest
                                                                                                                   -> Handler
                                                                                                                        EmptyResponse)
                                                                                                                :<|> (Named
                                                                                                                        "on-message-sent"
                                                                                                                        (Domain
                                                                                                                         -> RemoteMessage
                                                                                                                              ConvId
                                                                                                                         -> Handler
                                                                                                                              EmptyResponse)
                                                                                                                      :<|> (Named
                                                                                                                              "on-mls-message-sent"
                                                                                                                              (Domain
                                                                                                                               -> RemoteMLSMessage
                                                                                                                               -> Handler
                                                                                                                                    EmptyResponse)
                                                                                                                            :<|> (Named
                                                                                                                                    (Versioned
                                                                                                                                       'V0
                                                                                                                                       "on-conversation-updated")
                                                                                                                                    (Domain
                                                                                                                                     -> ConversationUpdateV0
                                                                                                                                     -> Handler
                                                                                                                                          EmptyResponse)
                                                                                                                                  :<|> (Named
                                                                                                                                          "on-conversation-updated"
                                                                                                                                          (Domain
                                                                                                                                           -> ConversationUpdate
                                                                                                                                           -> Handler
                                                                                                                                                EmptyResponse)
                                                                                                                                        :<|> Named
                                                                                                                                               "on-user-deleted-conversations"
                                                                                                                                               (Domain
                                                                                                                                                -> UserDeletedConversationsNotification
                                                                                                                                                -> Handler
                                                                                                                                                     EmptyResponse)))))))))))))))))))))))
         :<|> Tagged Handler Application)
forall a b. a -> b -> a :<|> b
:<|> forall {k} (api :: k) (m :: * -> *) (n :: * -> *).
HasServer api '[Domain] =>
(forall x. m x -> n x) -> ServerT api m -> ServerT api n
forall api (m :: * -> *) (n :: * -> *).
HasServer api '[Domain] =>
(forall x. m x -> n x) -> ServerT api m -> ServerT api n
hoistServerWithDomain @FederationAPI (Env -> Sem GalleyEffects x -> Handler x
forall a. Env -> Sem GalleyEffects a -> Handler a
toServantHandler Env
e) ServerT
  FederationAPI
  (Sem
     '[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,
       Error InvalidInput, Error InternalError, Error FederationError,
       Async, Delay, Fail, Embed IO, Error JSONResponse, Resource,
       Final IO])
ServerT FederationAPI (Sem GalleyEffects)
federationSitemap
            (Named
   "on-conversation-created"
   (Domain -> ConversationCreated ConvId -> Handler EmptyResponse)
 :<|> (Named
         "get-conversations@v1"
         (Domain
          -> GetConversationsRequest -> Handler GetConversationsResponse)
       :<|> (Named
               "get-conversations"
               (Domain
                -> GetConversationsRequest -> Handler GetConversationsResponseV2)
             :<|> (Named
                     "leave-conversation"
                     (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                      -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                      -> Dict (HasAnnotation 'Remote "brig" "get-users-by-ids")
                      -> Dict (HasAnnotation 'Remote "brig" "api-version")
                      -> Domain
                      -> LeaveConversationRequest
                      -> Handler LeaveConversationResponse)
                   :<|> (Named
                           "send-message"
                           (Dict (HasAnnotation 'Remote "galley" "on-message-sent")
                            -> Dict (HasAnnotation 'Remote "brig" "get-user-clients")
                            -> Domain
                            -> ProteusMessageSendRequest
                            -> Handler MessageSendResponse)
                         :<|> (Named
                                 "update-conversation"
                                 (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                                  -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                                  -> Dict (HasAnnotation 'Remote "brig" "get-users-by-ids")
                                  -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                                  -> Domain
                                  -> ConversationUpdateRequest
                                  -> Handler ConversationUpdateResponse)
                               :<|> (Named
                                       "mls-welcome"
                                       (Domain -> MLSWelcomeRequest -> Handler MLSWelcomeResponse)
                                     :<|> (Named
                                             "send-mls-message"
                                             (Dict
                                                (HasAnnotation
                                                   'Remote "galley" "on-conversation-updated")
                                              -> Dict
                                                   (HasAnnotation
                                                      'Remote "galley" "on-mls-message-sent")
                                              -> Dict
                                                   (HasAnnotation
                                                      'Remote "galley" "send-mls-message")
                                              -> Dict
                                                   (HasAnnotation 'Remote "brig" "get-mls-clients")
                                              -> Domain
                                              -> MLSMessageSendRequest
                                              -> Handler MLSMessageResponse)
                                           :<|> (Named
                                                   "send-mls-commit-bundle"
                                                   (Dict
                                                      (HasAnnotation 'Remote "galley" "mls-welcome")
                                                    -> Dict
                                                         (HasAnnotation
                                                            'Remote
                                                            "galley"
                                                            "on-conversation-updated")
                                                    -> Dict
                                                         (HasAnnotation
                                                            'Remote "galley" "on-mls-message-sent")
                                                    -> Dict
                                                         (HasAnnotation
                                                            'Remote
                                                            "galley"
                                                            "send-mls-commit-bundle")
                                                    -> Dict
                                                         (HasAnnotation
                                                            'Remote "brig" "get-mls-clients")
                                                    -> Dict
                                                         (HasAnnotation
                                                            'Remote "brig" "get-users-by-ids")
                                                    -> Dict
                                                         (HasAnnotation
                                                            'Remote "brig" "api-version")
                                                    -> Domain
                                                    -> MLSMessageSendRequest
                                                    -> Handler MLSMessageResponse)
                                                 :<|> (Named
                                                         "query-group-info"
                                                         (Domain
                                                          -> GetGroupInfoRequest
                                                          -> Handler GetGroupInfoResponse)
                                                       :<|> (Named
                                                               "update-typing-indicator"
                                                               (Dict
                                                                  (HasAnnotation
                                                                     'Remote
                                                                     "galley"
                                                                     "on-typing-indicator-updated")
                                                                -> Domain
                                                                -> TypingDataUpdateRequest
                                                                -> Handler TypingDataUpdateResponse)
                                                             :<|> (Named
                                                                     "on-typing-indicator-updated"
                                                                     (Domain
                                                                      -> TypingDataUpdated
                                                                      -> Handler EmptyResponse)
                                                                   :<|> (Named
                                                                           "get-sub-conversation"
                                                                           (Domain
                                                                            -> GetSubConversationsRequest
                                                                            -> Handler
                                                                                 GetSubConversationsResponse)
                                                                         :<|> (Named
                                                                                 "delete-sub-conversation"
                                                                                 (Domain
                                                                                  -> DeleteSubConversationFedRequest
                                                                                  -> Handler
                                                                                       DeleteSubConversationResponse)
                                                                               :<|> (Named
                                                                                       "leave-sub-conversation"
                                                                                       (Dict
                                                                                          (HasAnnotation
                                                                                             'Remote
                                                                                             "galley"
                                                                                             "on-mls-message-sent")
                                                                                        -> Domain
                                                                                        -> LeaveSubConversationRequest
                                                                                        -> Handler
                                                                                             LeaveSubConversationResponse)
                                                                                     :<|> (Named
                                                                                             "get-one2one-conversation@v1"
                                                                                             (Domain
                                                                                              -> GetOne2OneConversationRequest
                                                                                              -> Handler
                                                                                                   GetOne2OneConversationResponse)
                                                                                           :<|> (Named
                                                                                                   "get-one2one-conversation"
                                                                                                   (Domain
                                                                                                    -> GetOne2OneConversationRequest
                                                                                                    -> Handler
                                                                                                         GetOne2OneConversationResponseV2)
                                                                                                 :<|> (Named
                                                                                                         "on-client-removed"
                                                                                                         (Domain
                                                                                                          -> ClientRemovedRequest
                                                                                                          -> Handler
                                                                                                               EmptyResponse)
                                                                                                       :<|> (Named
                                                                                                               "on-message-sent"
                                                                                                               (Domain
                                                                                                                -> RemoteMessage
                                                                                                                     ConvId
                                                                                                                -> Handler
                                                                                                                     EmptyResponse)
                                                                                                             :<|> (Named
                                                                                                                     "on-mls-message-sent"
                                                                                                                     (Domain
                                                                                                                      -> RemoteMLSMessage
                                                                                                                      -> Handler
                                                                                                                           EmptyResponse)
                                                                                                                   :<|> (Named
                                                                                                                           (Versioned
                                                                                                                              'V0
                                                                                                                              "on-conversation-updated")
                                                                                                                           (Domain
                                                                                                                            -> ConversationUpdateV0
                                                                                                                            -> Handler
                                                                                                                                 EmptyResponse)
                                                                                                                         :<|> (Named
                                                                                                                                 "on-conversation-updated"
                                                                                                                                 (Domain
                                                                                                                                  -> ConversationUpdate
                                                                                                                                  -> Handler
                                                                                                                                       EmptyResponse)
                                                                                                                               :<|> Named
                                                                                                                                      "on-user-deleted-conversations"
                                                                                                                                      (Domain
                                                                                                                                       -> UserDeletedConversationsNotification
                                                                                                                                       -> Handler
                                                                                                                                            EmptyResponse)))))))))))))))))))))))
-> Tagged Handler Application
-> (Named
      "on-conversation-created"
      (Domain -> ConversationCreated ConvId -> Handler EmptyResponse)
    :<|> (Named
            "get-conversations@v1"
            (Domain
             -> GetConversationsRequest -> Handler GetConversationsResponse)
          :<|> (Named
                  "get-conversations"
                  (Domain
                   -> GetConversationsRequest -> Handler GetConversationsResponseV2)
                :<|> (Named
                        "leave-conversation"
                        (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                         -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                         -> Dict (HasAnnotation 'Remote "brig" "get-users-by-ids")
                         -> Dict (HasAnnotation 'Remote "brig" "api-version")
                         -> Domain
                         -> LeaveConversationRequest
                         -> Handler LeaveConversationResponse)
                      :<|> (Named
                              "send-message"
                              (Dict (HasAnnotation 'Remote "galley" "on-message-sent")
                               -> Dict (HasAnnotation 'Remote "brig" "get-user-clients")
                               -> Domain
                               -> ProteusMessageSendRequest
                               -> Handler MessageSendResponse)
                            :<|> (Named
                                    "update-conversation"
                                    (Dict (HasAnnotation 'Remote "galley" "on-conversation-updated")
                                     -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                                     -> Dict (HasAnnotation 'Remote "brig" "get-users-by-ids")
                                     -> Dict (HasAnnotation 'Remote "galley" "on-mls-message-sent")
                                     -> Domain
                                     -> ConversationUpdateRequest
                                     -> Handler ConversationUpdateResponse)
                                  :<|> (Named
                                          "mls-welcome"
                                          (Domain
                                           -> MLSWelcomeRequest -> Handler MLSWelcomeResponse)
                                        :<|> (Named
                                                "send-mls-message"
                                                (Dict
                                                   (HasAnnotation
                                                      'Remote "galley" "on-conversation-updated")
                                                 -> Dict
                                                      (HasAnnotation
                                                         'Remote "galley" "on-mls-message-sent")
                                                 -> Dict
                                                      (HasAnnotation
                                                         'Remote "galley" "send-mls-message")
                                                 -> Dict
                                                      (HasAnnotation
                                                         'Remote "brig" "get-mls-clients")
                                                 -> Domain
                                                 -> MLSMessageSendRequest
                                                 -> Handler MLSMessageResponse)
                                              :<|> (Named
                                                      "send-mls-commit-bundle"
                                                      (Dict
                                                         (HasAnnotation
                                                            'Remote "galley" "mls-welcome")
                                                       -> Dict
                                                            (HasAnnotation
                                                               'Remote
                                                               "galley"
                                                               "on-conversation-updated")
                                                       -> Dict
                                                            (HasAnnotation
                                                               'Remote
                                                               "galley"
                                                               "on-mls-message-sent")
                                                       -> Dict
                                                            (HasAnnotation
                                                               'Remote
                                                               "galley"
                                                               "send-mls-commit-bundle")
                                                       -> Dict
                                                            (HasAnnotation
                                                               'Remote "brig" "get-mls-clients")
                                                       -> Dict
                                                            (HasAnnotation
                                                               'Remote "brig" "get-users-by-ids")
                                                       -> Dict
                                                            (HasAnnotation
                                                               'Remote "brig" "api-version")
                                                       -> Domain
                                                       -> MLSMessageSendRequest
                                                       -> Handler MLSMessageResponse)
                                                    :<|> (Named
                                                            "query-group-info"
                                                            (Domain
                                                             -> GetGroupInfoRequest
                                                             -> Handler GetGroupInfoResponse)
                                                          :<|> (Named
                                                                  "update-typing-indicator"
                                                                  (Dict
                                                                     (HasAnnotation
                                                                        'Remote
                                                                        "galley"
                                                                        "on-typing-indicator-updated")
                                                                   -> Domain
                                                                   -> TypingDataUpdateRequest
                                                                   -> Handler
                                                                        TypingDataUpdateResponse)
                                                                :<|> (Named
                                                                        "on-typing-indicator-updated"
                                                                        (Domain
                                                                         -> TypingDataUpdated
                                                                         -> Handler EmptyResponse)
                                                                      :<|> (Named
                                                                              "get-sub-conversation"
                                                                              (Domain
                                                                               -> GetSubConversationsRequest
                                                                               -> Handler
                                                                                    GetSubConversationsResponse)
                                                                            :<|> (Named
                                                                                    "delete-sub-conversation"
                                                                                    (Domain
                                                                                     -> DeleteSubConversationFedRequest
                                                                                     -> Handler
                                                                                          DeleteSubConversationResponse)
                                                                                  :<|> (Named
                                                                                          "leave-sub-conversation"
                                                                                          (Dict
                                                                                             (HasAnnotation
                                                                                                'Remote
                                                                                                "galley"
                                                                                                "on-mls-message-sent")
                                                                                           -> Domain
                                                                                           -> LeaveSubConversationRequest
                                                                                           -> Handler
                                                                                                LeaveSubConversationResponse)
                                                                                        :<|> (Named
                                                                                                "get-one2one-conversation@v1"
                                                                                                (Domain
                                                                                                 -> GetOne2OneConversationRequest
                                                                                                 -> Handler
                                                                                                      GetOne2OneConversationResponse)
                                                                                              :<|> (Named
                                                                                                      "get-one2one-conversation"
                                                                                                      (Domain
                                                                                                       -> GetOne2OneConversationRequest
                                                                                                       -> Handler
                                                                                                            GetOne2OneConversationResponseV2)
                                                                                                    :<|> (Named
                                                                                                            "on-client-removed"
                                                                                                            (Domain
                                                                                                             -> ClientRemovedRequest
                                                                                                             -> Handler
                                                                                                                  EmptyResponse)
                                                                                                          :<|> (Named
                                                                                                                  "on-message-sent"
                                                                                                                  (Domain
                                                                                                                   -> RemoteMessage
                                                                                                                        ConvId
                                                                                                                   -> Handler
                                                                                                                        EmptyResponse)
                                                                                                                :<|> (Named
                                                                                                                        "on-mls-message-sent"
                                                                                                                        (Domain
                                                                                                                         -> RemoteMLSMessage
                                                                                                                         -> Handler
                                                                                                                              EmptyResponse)
                                                                                                                      :<|> (Named
                                                                                                                              (Versioned
                                                                                                                                 'V0
                                                                                                                                 "on-conversation-updated")
                                                                                                                              (Domain
                                                                                                                               -> ConversationUpdateV0
                                                                                                                               -> Handler
                                                                                                                                    EmptyResponse)
                                                                                                                            :<|> (Named
                                                                                                                                    "on-conversation-updated"
                                                                                                                                    (Domain
                                                                                                                                     -> ConversationUpdate
                                                                                                                                     -> Handler
                                                                                                                                          EmptyResponse)
                                                                                                                                  :<|> Named
                                                                                                                                         "on-user-deleted-conversations"
                                                                                                                                         (Domain
                                                                                                                                          -> UserDeletedConversationsNotification
                                                                                                                                          -> Handler
                                                                                                                                               EmptyResponse)))))))))))))))))))))))
   :<|> Tagged Handler Application
forall a b. a -> b -> a :<|> b
:<|> Application -> Tagged Handler Application
forall {k} (s :: k) b. b -> Tagged s b
Tagged Application
fallback
        )
        Request
r
        Response -> IO ResponseReceived
cont

closeApp :: Env -> IO ()
closeApp :: Env -> IO ()
closeApp Env
env = do
  ClientState -> IO ()
forall (m :: * -> *). MonadIO m => ClientState -> m ()
shutdown (Env
env Env -> Getting ClientState Env ClientState -> ClientState
forall s a. s -> Getting a s a -> a
^. Getting ClientState Env ClientState
Lens' Env ClientState
cstate)

customFormatters :: Servant.ErrorFormatters
customFormatters :: ErrorFormatters
customFormatters =
  ErrorFormatters
defaultErrorFormatters
    { bodyParserErrorFormatter = bodyParserErrorFormatter'
    }

bodyParserErrorFormatter' :: Servant.ErrorFormatter
bodyParserErrorFormatter' :: ErrorFormatter
bodyParserErrorFormatter' TypeRep
_ Request
_ String
errMsg =
  Servant.ServerError
    { errHTTPCode :: Int
Servant.errHTTPCode = Status -> Int
HTTP.statusCode Status
HTTP.status400,
      errReasonPhrase :: String
Servant.errReasonPhrase = ByteString -> String
UTF8.toString (ByteString -> String) -> ByteString -> String
forall a b. (a -> b) -> a -> b
$ Status -> ByteString
HTTP.statusMessage Status
HTTP.status400,
      errBody :: LByteString
Servant.errBody =
        Value -> LByteString
forall a. ToJSON a => a -> LByteString
Aeson.encode (Value -> LByteString) -> Value -> LByteString
forall a b. (a -> b) -> a -> b
$
          [Pair] -> Value
Aeson.object
            [ Key
"code" Key -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Aeson..= Scientific -> Value
Aeson.Number Scientific
400,
              Key
"message" Key -> String -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Aeson..= String
errMsg,
              Key
"label" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Aeson..= (Text
"bad-request" :: Text)
            ],
      errHeaders :: ResponseHeaders
Servant.errHeaders = [(HeaderName
HTTP.hContentType, MediaType -> ByteString
forall h. RenderHeader h => h -> ByteString
HTTPMedia.renderHeader (Proxy JSON -> MediaType
forall {k} (ctype :: k). Accept ctype => Proxy ctype -> MediaType
Servant.contentType (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @Servant.JSON)))]
    }

type CombinedAPI =
  GalleyAPI
    :<|> InternalAPI
    :<|> FederationAPI
    :<|> Raw

refreshMetrics :: App ()
refreshMetrics :: App ()
refreshMetrics = do
  Queue DeleteItem
q <- Getting (Queue DeleteItem) Env (Queue DeleteItem)
-> App (Queue DeleteItem)
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting (Queue DeleteItem) Env (Queue DeleteItem)
Lens' Env (Queue DeleteItem)
deleteQueue
  String -> App () -> App ()
safeForever String
"refreshMetrics" (App () -> App ()) -> App () -> App ()
forall a b. (a -> b) -> a -> b
$ do
    Word
n <- Queue DeleteItem -> App Word
forall (m :: * -> *) a. MonadIO m => Queue a -> m Word
Q.len Queue DeleteItem
q
    Gauge -> Double -> App ()
forall (m :: * -> *). MonadMonitor m => Gauge -> Double -> m ()
Prom.setGauge Gauge
deleteQueueLengthGauge (Word -> Double
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word
n)
    Int -> App ()
forall (m :: * -> *). MonadIO m => Int -> m ()
threadDelay Int
1000000

{-# NOINLINE deleteQueueLengthGauge #-}
deleteQueueLengthGauge :: Prom.Gauge
deleteQueueLengthGauge :: Gauge
deleteQueueLengthGauge =
  Metric Gauge -> Gauge
forall s. Metric s -> s
Prom.unsafeRegister (Metric Gauge -> Gauge) -> Metric Gauge -> Gauge
forall a b. (a -> b) -> a -> b
$
    Info -> Metric Gauge
Prom.gauge
      Prom.Info
        { metricName :: Text
Prom.metricName = Text
"galley_deletequeue_len",
          metricHelp :: Text
Prom.metricHelp = Text
"Length of the galley delete queue"
        }

collectAuthMetrics :: (MonadIO m) => AWS.Env -> m ()
collectAuthMetrics :: forall (m :: * -> *). MonadIO m => Env -> m ()
collectAuthMetrics Env
env = do
  IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$
    IO () -> IO ()
forall (f :: * -> *) a b. Applicative f => f a -> f b
forever (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ do
      Maybe NominalDiffTime
mbRemaining <- Env -> IO (Maybe NominalDiffTime)
readAuthExpiration Env
env
      Maybe NominalDiffTime -> IO ()
gaugeTokenRemaing Maybe NominalDiffTime
mbRemaining
      Int -> IO ()
forall (m :: * -> *). MonadIO m => Int -> m ()
threadDelay Int
1_000_000