-- This file is part of the Wire Server implementation.
--
-- Copyright (C) 2023 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 Wire.API.Routes.Internal.Galley.ConversationsIntra where

import Data.Aeson (FromJSON, ToJSON)
import Data.Id (ConvId, UserId)
import Data.OpenApi qualified as Swagger
import Data.Qualified
import Data.Schema
import Imports

data DesiredMembership = Included | Excluded
  deriving (Int -> DesiredMembership -> ShowS
[DesiredMembership] -> ShowS
DesiredMembership -> String
(Int -> DesiredMembership -> ShowS)
-> (DesiredMembership -> String)
-> ([DesiredMembership] -> ShowS)
-> Show DesiredMembership
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DesiredMembership -> ShowS
showsPrec :: Int -> DesiredMembership -> ShowS
$cshow :: DesiredMembership -> String
show :: DesiredMembership -> String
$cshowList :: [DesiredMembership] -> ShowS
showList :: [DesiredMembership] -> ShowS
Show, DesiredMembership -> DesiredMembership -> Bool
(DesiredMembership -> DesiredMembership -> Bool)
-> (DesiredMembership -> DesiredMembership -> Bool)
-> Eq DesiredMembership
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DesiredMembership -> DesiredMembership -> Bool
== :: DesiredMembership -> DesiredMembership -> Bool
$c/= :: DesiredMembership -> DesiredMembership -> Bool
/= :: DesiredMembership -> DesiredMembership -> Bool
Eq, (forall x. DesiredMembership -> Rep DesiredMembership x)
-> (forall x. Rep DesiredMembership x -> DesiredMembership)
-> Generic DesiredMembership
forall x. Rep DesiredMembership x -> DesiredMembership
forall x. DesiredMembership -> Rep DesiredMembership x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DesiredMembership -> Rep DesiredMembership x
from :: forall x. DesiredMembership -> Rep DesiredMembership x
$cto :: forall x. Rep DesiredMembership x -> DesiredMembership
to :: forall x. Rep DesiredMembership x -> DesiredMembership
Generic)
  deriving (Value -> Parser [DesiredMembership]
Value -> Parser DesiredMembership
(Value -> Parser DesiredMembership)
-> (Value -> Parser [DesiredMembership])
-> FromJSON DesiredMembership
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser DesiredMembership
parseJSON :: Value -> Parser DesiredMembership
$cparseJSONList :: Value -> Parser [DesiredMembership]
parseJSONList :: Value -> Parser [DesiredMembership]
FromJSON, [DesiredMembership] -> Value
[DesiredMembership] -> Encoding
DesiredMembership -> Value
DesiredMembership -> Encoding
(DesiredMembership -> Value)
-> (DesiredMembership -> Encoding)
-> ([DesiredMembership] -> Value)
-> ([DesiredMembership] -> Encoding)
-> ToJSON DesiredMembership
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: DesiredMembership -> Value
toJSON :: DesiredMembership -> Value
$ctoEncoding :: DesiredMembership -> Encoding
toEncoding :: DesiredMembership -> Encoding
$ctoJSONList :: [DesiredMembership] -> Value
toJSONList :: [DesiredMembership] -> Value
$ctoEncodingList :: [DesiredMembership] -> Encoding
toEncodingList :: [DesiredMembership] -> Encoding
ToJSON) via Schema DesiredMembership

instance ToSchema DesiredMembership where
  schema :: ValueSchema NamedSwaggerDoc DesiredMembership
schema =
    forall v doc a b.
(With v, HasEnum v doc) =>
Text
-> SchemaP [Value] v (Alt Maybe v) a b
-> SchemaP doc Value Value a b
enum @Text Text
"DesiredMembership" (SchemaP
   [Value] Text (Alt Maybe Text) DesiredMembership DesiredMembership
 -> ValueSchema NamedSwaggerDoc DesiredMembership)
-> SchemaP
     [Value] Text (Alt Maybe Text) DesiredMembership DesiredMembership
-> ValueSchema NamedSwaggerDoc DesiredMembership
forall a b. (a -> b) -> a -> b
$
      [SchemaP
   [Value] Text (Alt Maybe Text) DesiredMembership DesiredMembership]
-> SchemaP
     [Value] Text (Alt Maybe Text) DesiredMembership DesiredMembership
forall a. Monoid a => [a] -> a
mconcat
        [ Text
-> DesiredMembership
-> SchemaP
     [Value] Text (Alt Maybe Text) DesiredMembership DesiredMembership
forall a b.
(ToJSON a, Eq a, Eq b) =>
a -> b -> SchemaP [Value] a (Alt Maybe a) b b
element Text
"included" DesiredMembership
Included,
          Text
-> DesiredMembership
-> SchemaP
     [Value] Text (Alt Maybe Text) DesiredMembership DesiredMembership
forall a b.
(ToJSON a, Eq a, Eq b) =>
a -> b -> SchemaP [Value] a (Alt Maybe a) b b
element Text
"excluded" DesiredMembership
Excluded
        ]

data Actor = LocalActor | RemoteActor
  deriving (Int -> Actor -> ShowS
[Actor] -> ShowS
Actor -> String
(Int -> Actor -> ShowS)
-> (Actor -> String) -> ([Actor] -> ShowS) -> Show Actor
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Actor -> ShowS
showsPrec :: Int -> Actor -> ShowS
$cshow :: Actor -> String
show :: Actor -> String
$cshowList :: [Actor] -> ShowS
showList :: [Actor] -> ShowS
Show, Actor -> Actor -> Bool
(Actor -> Actor -> Bool) -> (Actor -> Actor -> Bool) -> Eq Actor
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Actor -> Actor -> Bool
== :: Actor -> Actor -> Bool
$c/= :: Actor -> Actor -> Bool
/= :: Actor -> Actor -> Bool
Eq, (forall x. Actor -> Rep Actor x)
-> (forall x. Rep Actor x -> Actor) -> Generic Actor
forall x. Rep Actor x -> Actor
forall x. Actor -> Rep Actor x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Actor -> Rep Actor x
from :: forall x. Actor -> Rep Actor x
$cto :: forall x. Rep Actor x -> Actor
to :: forall x. Rep Actor x -> Actor
Generic)
  deriving (Value -> Parser [Actor]
Value -> Parser Actor
(Value -> Parser Actor)
-> (Value -> Parser [Actor]) -> FromJSON Actor
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser Actor
parseJSON :: Value -> Parser Actor
$cparseJSONList :: Value -> Parser [Actor]
parseJSONList :: Value -> Parser [Actor]
FromJSON, [Actor] -> Value
[Actor] -> Encoding
Actor -> Value
Actor -> Encoding
(Actor -> Value)
-> (Actor -> Encoding)
-> ([Actor] -> Value)
-> ([Actor] -> Encoding)
-> ToJSON Actor
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: Actor -> Value
toJSON :: Actor -> Value
$ctoEncoding :: Actor -> Encoding
toEncoding :: Actor -> Encoding
$ctoJSONList :: [Actor] -> Value
toJSONList :: [Actor] -> Value
$ctoEncodingList :: [Actor] -> Encoding
toEncodingList :: [Actor] -> Encoding
ToJSON) via Schema Actor

instance ToSchema Actor where
  schema :: ValueSchema NamedSwaggerDoc Actor
schema =
    forall v doc a b.
(With v, HasEnum v doc) =>
Text
-> SchemaP [Value] v (Alt Maybe v) a b
-> SchemaP doc Value Value a b
enum @Text Text
"Actor" (SchemaP [Value] Text (Alt Maybe Text) Actor Actor
 -> ValueSchema NamedSwaggerDoc Actor)
-> SchemaP [Value] Text (Alt Maybe Text) Actor Actor
-> ValueSchema NamedSwaggerDoc Actor
forall a b. (a -> b) -> a -> b
$
      [SchemaP [Value] Text (Alt Maybe Text) Actor Actor]
-> SchemaP [Value] Text (Alt Maybe Text) Actor Actor
forall a. Monoid a => [a] -> a
mconcat
        [ Text -> Actor -> SchemaP [Value] Text (Alt Maybe Text) Actor Actor
forall a b.
(ToJSON a, Eq a, Eq b) =>
a -> b -> SchemaP [Value] a (Alt Maybe a) b b
element Text
"local_actor" Actor
LocalActor,
          Text -> Actor -> SchemaP [Value] Text (Alt Maybe Text) Actor Actor
forall a b.
(ToJSON a, Eq a, Eq b) =>
a -> b -> SchemaP [Value] a (Alt Maybe a) b b
element Text
"remote_actor" Actor
RemoteActor
        ]

data UpsertOne2OneConversationRequest = UpsertOne2OneConversationRequest
  { UpsertOne2OneConversationRequest -> Local UserId
uooLocalUser :: Local UserId,
    UpsertOne2OneConversationRequest -> Remote UserId
uooRemoteUser :: Remote UserId,
    UpsertOne2OneConversationRequest -> Actor
uooActor :: Actor,
    UpsertOne2OneConversationRequest -> DesiredMembership
uooActorDesiredMembership :: DesiredMembership,
    UpsertOne2OneConversationRequest -> Qualified ConvId
uooConvId :: Qualified ConvId
  }
  deriving (Int -> UpsertOne2OneConversationRequest -> ShowS
[UpsertOne2OneConversationRequest] -> ShowS
UpsertOne2OneConversationRequest -> String
(Int -> UpsertOne2OneConversationRequest -> ShowS)
-> (UpsertOne2OneConversationRequest -> String)
-> ([UpsertOne2OneConversationRequest] -> ShowS)
-> Show UpsertOne2OneConversationRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> UpsertOne2OneConversationRequest -> ShowS
showsPrec :: Int -> UpsertOne2OneConversationRequest -> ShowS
$cshow :: UpsertOne2OneConversationRequest -> String
show :: UpsertOne2OneConversationRequest -> String
$cshowList :: [UpsertOne2OneConversationRequest] -> ShowS
showList :: [UpsertOne2OneConversationRequest] -> ShowS
Show, (forall x.
 UpsertOne2OneConversationRequest
 -> Rep UpsertOne2OneConversationRequest x)
-> (forall x.
    Rep UpsertOne2OneConversationRequest x
    -> UpsertOne2OneConversationRequest)
-> Generic UpsertOne2OneConversationRequest
forall x.
Rep UpsertOne2OneConversationRequest x
-> UpsertOne2OneConversationRequest
forall x.
UpsertOne2OneConversationRequest
-> Rep UpsertOne2OneConversationRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
UpsertOne2OneConversationRequest
-> Rep UpsertOne2OneConversationRequest x
from :: forall x.
UpsertOne2OneConversationRequest
-> Rep UpsertOne2OneConversationRequest x
$cto :: forall x.
Rep UpsertOne2OneConversationRequest x
-> UpsertOne2OneConversationRequest
to :: forall x.
Rep UpsertOne2OneConversationRequest x
-> UpsertOne2OneConversationRequest
Generic)
  deriving (Value -> Parser [UpsertOne2OneConversationRequest]
Value -> Parser UpsertOne2OneConversationRequest
(Value -> Parser UpsertOne2OneConversationRequest)
-> (Value -> Parser [UpsertOne2OneConversationRequest])
-> FromJSON UpsertOne2OneConversationRequest
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser UpsertOne2OneConversationRequest
parseJSON :: Value -> Parser UpsertOne2OneConversationRequest
$cparseJSONList :: Value -> Parser [UpsertOne2OneConversationRequest]
parseJSONList :: Value -> Parser [UpsertOne2OneConversationRequest]
FromJSON, [UpsertOne2OneConversationRequest] -> Value
[UpsertOne2OneConversationRequest] -> Encoding
UpsertOne2OneConversationRequest -> Value
UpsertOne2OneConversationRequest -> Encoding
(UpsertOne2OneConversationRequest -> Value)
-> (UpsertOne2OneConversationRequest -> Encoding)
-> ([UpsertOne2OneConversationRequest] -> Value)
-> ([UpsertOne2OneConversationRequest] -> Encoding)
-> ToJSON UpsertOne2OneConversationRequest
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: UpsertOne2OneConversationRequest -> Value
toJSON :: UpsertOne2OneConversationRequest -> Value
$ctoEncoding :: UpsertOne2OneConversationRequest -> Encoding
toEncoding :: UpsertOne2OneConversationRequest -> Encoding
$ctoJSONList :: [UpsertOne2OneConversationRequest] -> Value
toJSONList :: [UpsertOne2OneConversationRequest] -> Value
$ctoEncodingList :: [UpsertOne2OneConversationRequest] -> Encoding
toEncodingList :: [UpsertOne2OneConversationRequest] -> Encoding
ToJSON, Typeable UpsertOne2OneConversationRequest
Typeable UpsertOne2OneConversationRequest =>
(Proxy UpsertOne2OneConversationRequest
 -> Declare (Definitions Schema) NamedSchema)
-> ToSchema UpsertOne2OneConversationRequest
Proxy UpsertOne2OneConversationRequest
-> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy UpsertOne2OneConversationRequest
-> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy UpsertOne2OneConversationRequest
-> Declare (Definitions Schema) NamedSchema
Swagger.ToSchema) via Schema UpsertOne2OneConversationRequest

instance ToSchema UpsertOne2OneConversationRequest where
  schema :: ValueSchema NamedSwaggerDoc UpsertOne2OneConversationRequest
schema =
    Text
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     UpsertOne2OneConversationRequest
-> ValueSchema NamedSwaggerDoc UpsertOne2OneConversationRequest
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"UpsertOne2OneConversationRequest" (SchemaP
   SwaggerDoc
   Object
   [Pair]
   UpsertOne2OneConversationRequest
   UpsertOne2OneConversationRequest
 -> ValueSchema NamedSwaggerDoc UpsertOne2OneConversationRequest)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     UpsertOne2OneConversationRequest
-> ValueSchema NamedSwaggerDoc UpsertOne2OneConversationRequest
forall a b. (a -> b) -> a -> b
$
      Local UserId
-> Remote UserId
-> Actor
-> DesiredMembership
-> Qualified ConvId
-> UpsertOne2OneConversationRequest
UpsertOne2OneConversationRequest
        (Local UserId
 -> Remote UserId
 -> Actor
 -> DesiredMembership
 -> Qualified ConvId
 -> UpsertOne2OneConversationRequest)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     (Local UserId)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     (Remote UserId
      -> Actor
      -> DesiredMembership
      -> Qualified ConvId
      -> UpsertOne2OneConversationRequest)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Local UserId -> Qualified UserId
forall (t :: QTag) a. QualifiedWithTag t a -> Qualified a
tUntagged (Local UserId -> Qualified UserId)
-> (UpsertOne2OneConversationRequest -> Local UserId)
-> UpsertOne2OneConversationRequest
-> Qualified UserId
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UpsertOne2OneConversationRequest -> Local UserId
uooLocalUser) (UpsertOne2OneConversationRequest -> Qualified UserId)
-> SchemaP
     SwaggerDoc Object [Pair] (Qualified UserId) (Local UserId)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     (Local UserId)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP
     NamedSwaggerDoc Value Value (Qualified UserId) (Local UserId)
-> SchemaP
     SwaggerDoc Object [Pair] (Qualified UserId) (Local UserId)
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"local_user" (Qualified UserId -> Local UserId
forall (t :: QTag) a. Qualified a -> QualifiedWithTag t a
qTagUnsafe (Qualified UserId -> Local UserId)
-> SchemaP
     NamedSwaggerDoc Value Value (Qualified UserId) (Qualified UserId)
-> SchemaP
     NamedSwaggerDoc Value Value (Qualified UserId) (Local UserId)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> SchemaP
  NamedSwaggerDoc Value Value (Qualified UserId) (Qualified UserId)
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  UpsertOne2OneConversationRequest
  (Remote UserId
   -> Actor
   -> DesiredMembership
   -> Qualified ConvId
   -> UpsertOne2OneConversationRequest)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     (Remote UserId)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     (Actor
      -> DesiredMembership
      -> Qualified ConvId
      -> UpsertOne2OneConversationRequest)
forall a b.
SchemaP
  SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest (a -> b)
-> SchemaP
     SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest a
-> SchemaP
     SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Remote UserId -> Qualified UserId
forall (t :: QTag) a. QualifiedWithTag t a -> Qualified a
tUntagged (Remote UserId -> Qualified UserId)
-> (UpsertOne2OneConversationRequest -> Remote UserId)
-> UpsertOne2OneConversationRequest
-> Qualified UserId
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UpsertOne2OneConversationRequest -> Remote UserId
uooRemoteUser) (UpsertOne2OneConversationRequest -> Qualified UserId)
-> SchemaP
     SwaggerDoc Object [Pair] (Qualified UserId) (Remote UserId)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     (Remote UserId)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP
     NamedSwaggerDoc Value Value (Qualified UserId) (Remote UserId)
-> SchemaP
     SwaggerDoc Object [Pair] (Qualified UserId) (Remote UserId)
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"remote_user" (Qualified UserId -> Remote UserId
forall (t :: QTag) a. Qualified a -> QualifiedWithTag t a
qTagUnsafe (Qualified UserId -> Remote UserId)
-> SchemaP
     NamedSwaggerDoc Value Value (Qualified UserId) (Qualified UserId)
-> SchemaP
     NamedSwaggerDoc Value Value (Qualified UserId) (Remote UserId)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> SchemaP
  NamedSwaggerDoc Value Value (Qualified UserId) (Qualified UserId)
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  UpsertOne2OneConversationRequest
  (Actor
   -> DesiredMembership
   -> Qualified ConvId
   -> UpsertOne2OneConversationRequest)
-> SchemaP
     SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest Actor
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     (DesiredMembership
      -> Qualified ConvId -> UpsertOne2OneConversationRequest)
forall a b.
SchemaP
  SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest (a -> b)
-> SchemaP
     SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest a
-> SchemaP
     SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> UpsertOne2OneConversationRequest -> Actor
uooActor (UpsertOne2OneConversationRequest -> Actor)
-> SchemaP SwaggerDoc Object [Pair] Actor Actor
-> SchemaP
     SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest Actor
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> ValueSchema NamedSwaggerDoc Actor
-> SchemaP SwaggerDoc Object [Pair] Actor Actor
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"actor" ValueSchema NamedSwaggerDoc Actor
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  UpsertOne2OneConversationRequest
  (DesiredMembership
   -> Qualified ConvId -> UpsertOne2OneConversationRequest)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     DesiredMembership
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     (Qualified ConvId -> UpsertOne2OneConversationRequest)
forall a b.
SchemaP
  SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest (a -> b)
-> SchemaP
     SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest a
-> SchemaP
     SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> UpsertOne2OneConversationRequest -> DesiredMembership
uooActorDesiredMembership (UpsertOne2OneConversationRequest -> DesiredMembership)
-> SchemaP
     SwaggerDoc Object [Pair] DesiredMembership DesiredMembership
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     DesiredMembership
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> ValueSchema NamedSwaggerDoc DesiredMembership
-> SchemaP
     SwaggerDoc Object [Pair] DesiredMembership DesiredMembership
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"actor_desired_membership" ValueSchema NamedSwaggerDoc DesiredMembership
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  UpsertOne2OneConversationRequest
  (Qualified ConvId -> UpsertOne2OneConversationRequest)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     (Qualified ConvId)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     UpsertOne2OneConversationRequest
forall a b.
SchemaP
  SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest (a -> b)
-> SchemaP
     SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest a
-> SchemaP
     SwaggerDoc Object [Pair] UpsertOne2OneConversationRequest b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> UpsertOne2OneConversationRequest -> Qualified ConvId
uooConvId (UpsertOne2OneConversationRequest -> Qualified ConvId)
-> SchemaP
     SwaggerDoc Object [Pair] (Qualified ConvId) (Qualified ConvId)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpsertOne2OneConversationRequest
     (Qualified ConvId)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP
     NamedSwaggerDoc Value Value (Qualified ConvId) (Qualified ConvId)
-> SchemaP
     SwaggerDoc Object [Pair] (Qualified ConvId) (Qualified ConvId)
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"conversation_id" SchemaP
  NamedSwaggerDoc Value Value (Qualified ConvId) (Qualified ConvId)
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema