{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}

-- 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 Wire.API.Team
  ( -- * Team
    Team (..),
    newTeam,
    teamId,
    teamCreator,
    teamName,
    teamIcon,
    teamIconKey,
    teamBinding,
    teamSplashScreen,
    TeamBinding (..),
    Icon (..),

    -- * TeamList
    TeamList (..),
    newTeamList,
    teamListTeams,
    teamListHasMore,

    -- * NewTeam
    NewTeam (..),
    newTeamObjectSchema,
    newNewTeam,

    -- * TeamUpdateData
    TeamUpdateData (..),
    newTeamUpdateData,
    newTeamDeleteDataWithCode,
    nameUpdate,
    iconUpdate,
    iconKeyUpdate,
    splashScreenUpdate,

    -- * TeamDeleteData
    TeamDeleteData (..),
    newTeamDeleteData,
    tdAuthPassword,
    tdVerificationCode,
  )
where

import Control.Lens (makeLenses, over, (?~))
import Data.Aeson (FromJSON, ToJSON, Value (..))
import Data.Aeson.Types (Parser)
import Data.Attoparsec.ByteString qualified as Atto (Parser, string)
import Data.Attoparsec.Combinator (choice)
import Data.ByteString.Conversion
import Data.Code qualified as Code
import Data.Id (TeamId, UserId)
import Data.Misc (PlainTextPassword6)
import Data.OpenApi (HasDeprecated (deprecated))
import Data.OpenApi qualified as S
import Data.Range
import Data.Schema
import Data.Text.Encoding qualified as T
import Imports
import Test.QuickCheck.Gen (suchThat)
import Wire.API.Asset (AssetKey)
import Wire.Arbitrary (Arbitrary (arbitrary), GenericUniform (..))

--------------------------------------------------------------------------------
-- Team

data Team = Team
  { Team -> TeamId
_teamId :: TeamId,
    Team -> UserId
_teamCreator :: UserId,
    Team -> Text
_teamName :: Text,
    Team -> Icon
_teamIcon :: Icon,
    Team -> Maybe Text
_teamIconKey :: Maybe Text,
    Team -> TeamBinding
_teamBinding :: TeamBinding,
    Team -> Icon
_teamSplashScreen :: Icon
  }
  deriving stock (Team -> Team -> Bool
(Team -> Team -> Bool) -> (Team -> Team -> Bool) -> Eq Team
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Team -> Team -> Bool
== :: Team -> Team -> Bool
$c/= :: Team -> Team -> Bool
/= :: Team -> Team -> Bool
Eq, Int -> Team -> ShowS
[Team] -> ShowS
Team -> String
(Int -> Team -> ShowS)
-> (Team -> String) -> ([Team] -> ShowS) -> Show Team
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Team -> ShowS
showsPrec :: Int -> Team -> ShowS
$cshow :: Team -> String
show :: Team -> String
$cshowList :: [Team] -> ShowS
showList :: [Team] -> ShowS
Show, (forall x. Team -> Rep Team x)
-> (forall x. Rep Team x -> Team) -> Generic Team
forall x. Rep Team x -> Team
forall x. Team -> Rep Team x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Team -> Rep Team x
from :: forall x. Team -> Rep Team x
$cto :: forall x. Rep Team x -> Team
to :: forall x. Rep Team x -> Team
Generic)
  deriving (Gen Team
Gen Team -> (Team -> [Team]) -> Arbitrary Team
Team -> [Team]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen Team
arbitrary :: Gen Team
$cshrink :: Team -> [Team]
shrink :: Team -> [Team]
Arbitrary) via (GenericUniform Team)
  deriving ([Team] -> Value
[Team] -> Encoding
Team -> Value
Team -> Encoding
(Team -> Value)
-> (Team -> Encoding)
-> ([Team] -> Value)
-> ([Team] -> Encoding)
-> ToJSON Team
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: Team -> Value
toJSON :: Team -> Value
$ctoEncoding :: Team -> Encoding
toEncoding :: Team -> Encoding
$ctoJSONList :: [Team] -> Value
toJSONList :: [Team] -> Value
$ctoEncodingList :: [Team] -> Encoding
toEncodingList :: [Team] -> Encoding
ToJSON, Value -> Parser [Team]
Value -> Parser Team
(Value -> Parser Team) -> (Value -> Parser [Team]) -> FromJSON Team
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser Team
parseJSON :: Value -> Parser Team
$cparseJSONList :: Value -> Parser [Team]
parseJSONList :: Value -> Parser [Team]
FromJSON, Typeable Team
Typeable Team =>
(Proxy Team -> Declare (Definitions Schema) NamedSchema)
-> ToSchema Team
Proxy Team -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy Team -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy Team -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via (Schema Team)

newTeam :: TeamId -> UserId -> Text -> Icon -> TeamBinding -> Team
newTeam :: TeamId -> UserId -> Text -> Icon -> TeamBinding -> Team
newTeam TeamId
tid UserId
uid Text
nme Icon
ico TeamBinding
tb = TeamId
-> UserId
-> Text
-> Icon
-> Maybe Text
-> TeamBinding
-> Icon
-> Team
Team TeamId
tid UserId
uid Text
nme Icon
ico Maybe Text
forall a. Maybe a
Nothing TeamBinding
tb Icon
DefaultIcon

instance ToSchema Team where
  schema :: ValueSchema NamedSwaggerDoc Team
schema =
    Text
-> (NamedSwaggerDoc -> NamedSwaggerDoc)
-> ObjectSchema SwaggerDoc Team
-> ValueSchema NamedSwaggerDoc Team
forall doc doc' a.
HasObject doc doc' =>
Text -> (doc' -> doc') -> ObjectSchema doc a -> ValueSchema doc' a
objectWithDocModifier Text
"Team" NamedSwaggerDoc -> NamedSwaggerDoc
desc (ObjectSchema SwaggerDoc Team -> ValueSchema NamedSwaggerDoc Team)
-> ObjectSchema SwaggerDoc Team -> ValueSchema NamedSwaggerDoc Team
forall a b. (a -> b) -> a -> b
$
      TeamId
-> UserId
-> Text
-> Icon
-> Maybe Text
-> TeamBinding
-> Icon
-> Team
Team
        (TeamId
 -> UserId
 -> Text
 -> Icon
 -> Maybe Text
 -> TeamBinding
 -> Icon
 -> Team)
-> SchemaP SwaggerDoc Object [Pair] Team TeamId
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     Team
     (UserId
      -> Text -> Icon -> Maybe Text -> TeamBinding -> Icon -> Team)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Team -> TeamId
_teamId (Team -> TeamId)
-> SchemaP SwaggerDoc Object [Pair] TeamId TeamId
-> SchemaP SwaggerDoc Object [Pair] Team TeamId
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value TeamId TeamId
-> SchemaP SwaggerDoc Object [Pair] TeamId TeamId
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"id" SchemaP NamedSwaggerDoc Value Value TeamId TeamId
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  Team
  (UserId
   -> Text -> Icon -> Maybe Text -> TeamBinding -> Icon -> Team)
-> SchemaP SwaggerDoc Object [Pair] Team UserId
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     Team
     (Text -> Icon -> Maybe Text -> TeamBinding -> Icon -> Team)
forall a b.
SchemaP SwaggerDoc Object [Pair] Team (a -> b)
-> SchemaP SwaggerDoc Object [Pair] Team a
-> SchemaP SwaggerDoc Object [Pair] Team b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Team -> UserId
_teamCreator (Team -> UserId)
-> SchemaP SwaggerDoc Object [Pair] UserId UserId
-> SchemaP SwaggerDoc Object [Pair] Team UserId
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value UserId UserId
-> SchemaP SwaggerDoc Object [Pair] UserId UserId
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"creator" SchemaP NamedSwaggerDoc Value Value UserId UserId
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  Team
  (Text -> Icon -> Maybe Text -> TeamBinding -> Icon -> Team)
-> SchemaP SwaggerDoc Object [Pair] Team Text
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     Team
     (Icon -> Maybe Text -> TeamBinding -> Icon -> Team)
forall a b.
SchemaP SwaggerDoc Object [Pair] Team (a -> b)
-> SchemaP SwaggerDoc Object [Pair] Team a
-> SchemaP SwaggerDoc Object [Pair] Team b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Team -> Text
_teamName (Team -> Text)
-> SchemaP SwaggerDoc Object [Pair] Text Text
-> SchemaP SwaggerDoc Object [Pair] Team Text
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value Text Text
-> SchemaP SwaggerDoc Object [Pair] Text Text
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"name" SchemaP NamedSwaggerDoc Value Value Text Text
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  Team
  (Icon -> Maybe Text -> TeamBinding -> Icon -> Team)
-> SchemaP SwaggerDoc Object [Pair] Team Icon
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     Team
     (Maybe Text -> TeamBinding -> Icon -> Team)
forall a b.
SchemaP SwaggerDoc Object [Pair] Team (a -> b)
-> SchemaP SwaggerDoc Object [Pair] Team a
-> SchemaP SwaggerDoc Object [Pair] Team b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Team -> Icon
_teamIcon (Team -> Icon)
-> SchemaP SwaggerDoc Object [Pair] Icon Icon
-> SchemaP SwaggerDoc Object [Pair] Team Icon
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value Icon Icon
-> SchemaP SwaggerDoc Object [Pair] Icon Icon
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"icon" SchemaP NamedSwaggerDoc Value Value Icon Icon
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  Team
  (Maybe Text -> TeamBinding -> Icon -> Team)
-> SchemaP SwaggerDoc Object [Pair] Team (Maybe Text)
-> SchemaP
     SwaggerDoc Object [Pair] Team (TeamBinding -> Icon -> Team)
forall a b.
SchemaP SwaggerDoc Object [Pair] Team (a -> b)
-> SchemaP SwaggerDoc Object [Pair] Team a
-> SchemaP SwaggerDoc Object [Pair] Team b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Team -> Maybe Text
_teamIconKey (Team -> Maybe Text)
-> SchemaP SwaggerDoc Object [Pair] (Maybe Text) (Maybe Text)
-> SchemaP SwaggerDoc Object [Pair] Team (Maybe Text)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= SchemaP SwaggerDoc Object [Pair] Text (Maybe Text)
-> SchemaP SwaggerDoc Object [Pair] (Maybe Text) (Maybe Text)
forall w d v a b.
Monoid w =>
SchemaP d v w a b -> SchemaP d v w (Maybe a) b
maybe_ (Text
-> SchemaP NamedSwaggerDoc Value Value Text Text
-> SchemaP SwaggerDoc Object [Pair] Text (Maybe Text)
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optField Text
"icon_key" SchemaP NamedSwaggerDoc Value Value Text Text
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)
        SchemaP SwaggerDoc Object [Pair] Team (TeamBinding -> Icon -> Team)
-> SchemaP SwaggerDoc Object [Pair] Team TeamBinding
-> SchemaP SwaggerDoc Object [Pair] Team (Icon -> Team)
forall a b.
SchemaP SwaggerDoc Object [Pair] Team (a -> b)
-> SchemaP SwaggerDoc Object [Pair] Team a
-> SchemaP SwaggerDoc Object [Pair] Team b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Team -> TeamBinding
_teamBinding (Team -> TeamBinding)
-> SchemaP SwaggerDoc Object [Pair] TeamBinding TeamBinding
-> SchemaP SwaggerDoc Object [Pair] Team TeamBinding
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= (TeamBinding -> Maybe TeamBinding -> TeamBinding
forall a. a -> Maybe a -> a
fromMaybe TeamBinding
Binding (Maybe TeamBinding -> TeamBinding)
-> SchemaP SwaggerDoc Object [Pair] TeamBinding (Maybe TeamBinding)
-> SchemaP SwaggerDoc Object [Pair] TeamBinding TeamBinding
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text
-> (NamedSwaggerDoc -> NamedSwaggerDoc)
-> SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding
-> SchemaP SwaggerDoc Object [Pair] TeamBinding (Maybe TeamBinding)
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> (doc' -> doc')
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optFieldWithDocModifier Text
"binding" NamedSwaggerDoc -> NamedSwaggerDoc
forall {b} {b}.
(HasDescription b (Maybe b), IsString b,
 HasDeprecated b (Maybe Bool)) =>
b -> b
bindingDesc SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)
        SchemaP SwaggerDoc Object [Pair] Team (Icon -> Team)
-> SchemaP SwaggerDoc Object [Pair] Team Icon
-> ObjectSchema SwaggerDoc Team
forall a b.
SchemaP SwaggerDoc Object [Pair] Team (a -> b)
-> SchemaP SwaggerDoc Object [Pair] Team a
-> SchemaP SwaggerDoc Object [Pair] Team b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Team -> Icon
_teamSplashScreen (Team -> Icon)
-> SchemaP SwaggerDoc Object [Pair] Icon Icon
-> SchemaP SwaggerDoc Object [Pair] Team Icon
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= (Icon -> Maybe Icon -> Icon
forall a. a -> Maybe a -> a
fromMaybe Icon
DefaultIcon (Maybe Icon -> Icon)
-> SchemaP SwaggerDoc Object [Pair] Icon (Maybe Icon)
-> SchemaP SwaggerDoc Object [Pair] Icon Icon
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text
-> SchemaP NamedSwaggerDoc Value Value Icon Icon
-> SchemaP SwaggerDoc Object [Pair] Icon (Maybe Icon)
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optField Text
"splash_screen" SchemaP NamedSwaggerDoc Value Value Icon Icon
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)
    where
      desc :: NamedSwaggerDoc -> NamedSwaggerDoc
desc = (Maybe Text -> Identity (Maybe Text))
-> NamedSwaggerDoc -> Identity NamedSwaggerDoc
forall s a. HasDescription s a => Lens' s a
Lens' NamedSwaggerDoc (Maybe Text)
description ((Maybe Text -> Identity (Maybe Text))
 -> NamedSwaggerDoc -> Identity NamedSwaggerDoc)
-> Text -> NamedSwaggerDoc -> NamedSwaggerDoc
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ Text
"`binding` is deprecated, and should be ignored. The non-binding teams API is not used (and will not be supported from API version V4 onwards), and `binding` will always be `true`."
      bindingDesc :: b -> b
bindingDesc b
v =
        b
v
          b -> (b -> b) -> b
forall a b. a -> (a -> b) -> b
& (Maybe b -> Identity (Maybe b)) -> b -> Identity b
forall s a. HasDescription s a => Lens' s a
Lens' b (Maybe b)
description ((Maybe b -> Identity (Maybe b)) -> b -> Identity b) -> b -> b -> b
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ b
"Deprecated, please ignore."
          b -> (b -> b) -> b
forall a b. a -> (a -> b) -> b
& (Maybe Bool -> Identity (Maybe Bool)) -> b -> Identity b
forall s a. HasDeprecated s a => Lens' s a
Lens' b (Maybe Bool)
deprecated ((Maybe Bool -> Identity (Maybe Bool)) -> b -> Identity b)
-> Bool -> b -> b
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ Bool
True

-- | How a team "binds" its members (users)
--
-- A `Binding` team is the normal team which we see in the UI. A user is
-- on-boarded as part of the team. If the team gets deleted/suspended the user
-- gets deleted/suspended.
--
-- A `NonBinding` team is a concept only in the backend. It is a team someone
-- can create and someone who has an account on Wire can join that team. This
-- way, in theory, one person can join many teams. This concept never made it as
-- a concept of product, but got used a lot of writing integration tests. Newer
-- features don't really work well with this and sometimes we have to rewrite
-- parts of the tests to use `Binding` teams.
--
-- Please try to not use `NonBinding` teams in tests anymore. In future, we
-- would like it to be deleted, but it is hard to delete because it requires a
-- bunch of tests to be rewritten.
data TeamBinding
  = Binding
  | NonBinding
  deriving stock (TeamBinding -> TeamBinding -> Bool
(TeamBinding -> TeamBinding -> Bool)
-> (TeamBinding -> TeamBinding -> Bool) -> Eq TeamBinding
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TeamBinding -> TeamBinding -> Bool
== :: TeamBinding -> TeamBinding -> Bool
$c/= :: TeamBinding -> TeamBinding -> Bool
/= :: TeamBinding -> TeamBinding -> Bool
Eq, Int -> TeamBinding -> ShowS
[TeamBinding] -> ShowS
TeamBinding -> String
(Int -> TeamBinding -> ShowS)
-> (TeamBinding -> String)
-> ([TeamBinding] -> ShowS)
-> Show TeamBinding
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TeamBinding -> ShowS
showsPrec :: Int -> TeamBinding -> ShowS
$cshow :: TeamBinding -> String
show :: TeamBinding -> String
$cshowList :: [TeamBinding] -> ShowS
showList :: [TeamBinding] -> ShowS
Show, (forall x. TeamBinding -> Rep TeamBinding x)
-> (forall x. Rep TeamBinding x -> TeamBinding)
-> Generic TeamBinding
forall x. Rep TeamBinding x -> TeamBinding
forall x. TeamBinding -> Rep TeamBinding x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. TeamBinding -> Rep TeamBinding x
from :: forall x. TeamBinding -> Rep TeamBinding x
$cto :: forall x. Rep TeamBinding x -> TeamBinding
to :: forall x. Rep TeamBinding x -> TeamBinding
Generic)
  deriving (Gen TeamBinding
Gen TeamBinding
-> (TeamBinding -> [TeamBinding]) -> Arbitrary TeamBinding
TeamBinding -> [TeamBinding]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen TeamBinding
arbitrary :: Gen TeamBinding
$cshrink :: TeamBinding -> [TeamBinding]
shrink :: TeamBinding -> [TeamBinding]
Arbitrary) via (GenericUniform TeamBinding)
  deriving ([TeamBinding] -> Value
[TeamBinding] -> Encoding
TeamBinding -> Value
TeamBinding -> Encoding
(TeamBinding -> Value)
-> (TeamBinding -> Encoding)
-> ([TeamBinding] -> Value)
-> ([TeamBinding] -> Encoding)
-> ToJSON TeamBinding
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: TeamBinding -> Value
toJSON :: TeamBinding -> Value
$ctoEncoding :: TeamBinding -> Encoding
toEncoding :: TeamBinding -> Encoding
$ctoJSONList :: [TeamBinding] -> Value
toJSONList :: [TeamBinding] -> Value
$ctoEncodingList :: [TeamBinding] -> Encoding
toEncodingList :: [TeamBinding] -> Encoding
ToJSON, Value -> Parser [TeamBinding]
Value -> Parser TeamBinding
(Value -> Parser TeamBinding)
-> (Value -> Parser [TeamBinding]) -> FromJSON TeamBinding
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser TeamBinding
parseJSON :: Value -> Parser TeamBinding
$cparseJSONList :: Value -> Parser [TeamBinding]
parseJSONList :: Value -> Parser [TeamBinding]
FromJSON, Typeable TeamBinding
Typeable TeamBinding =>
(Proxy TeamBinding -> Declare (Definitions Schema) NamedSchema)
-> ToSchema TeamBinding
Proxy TeamBinding -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy TeamBinding -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy TeamBinding -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via (Schema TeamBinding)

instance ToSchema TeamBinding where
  schema :: SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding
schema =
    ASetter
  (SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding)
  (SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding)
  NamedSwaggerDoc
  NamedSwaggerDoc
-> (NamedSwaggerDoc -> NamedSwaggerDoc)
-> SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding
-> SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
  (SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding)
  (SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding)
  NamedSwaggerDoc
  NamedSwaggerDoc
forall a a' doc doc'. HasDoc a a' doc doc' => Lens a a' doc doc'
Lens
  (SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding)
  (SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding)
  NamedSwaggerDoc
  NamedSwaggerDoc
doc ((Maybe Bool -> Identity (Maybe Bool))
-> NamedSwaggerDoc -> Identity NamedSwaggerDoc
forall s a. HasDeprecated s a => Lens' s a
Lens' NamedSwaggerDoc (Maybe Bool)
deprecated ((Maybe Bool -> Identity (Maybe Bool))
 -> NamedSwaggerDoc -> Identity NamedSwaggerDoc)
-> Bool -> NamedSwaggerDoc -> NamedSwaggerDoc
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ Bool
True) (SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding
 -> SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding)
-> SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding
-> SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding
forall a b. (a -> b) -> a -> b
$
      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 @Bool Text
"TeamBinding" (SchemaP [Value] Bool (Alt Maybe Bool) TeamBinding TeamBinding
 -> SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding)
-> SchemaP [Value] Bool (Alt Maybe Bool) TeamBinding TeamBinding
-> SchemaP NamedSwaggerDoc Value Value TeamBinding TeamBinding
forall a b. (a -> b) -> a -> b
$
        [SchemaP [Value] Bool (Alt Maybe Bool) TeamBinding TeamBinding]
-> SchemaP [Value] Bool (Alt Maybe Bool) TeamBinding TeamBinding
forall a. Monoid a => [a] -> a
mconcat [Bool
-> TeamBinding
-> SchemaP [Value] Bool (Alt Maybe Bool) TeamBinding TeamBinding
forall a b.
(ToJSON a, Eq a, Eq b) =>
a -> b -> SchemaP [Value] a (Alt Maybe a) b b
element Bool
True TeamBinding
Binding, Bool
-> TeamBinding
-> SchemaP [Value] Bool (Alt Maybe Bool) TeamBinding TeamBinding
forall a b.
(ToJSON a, Eq a, Eq b) =>
a -> b -> SchemaP [Value] a (Alt Maybe a) b b
element Bool
False TeamBinding
NonBinding]

--------------------------------------------------------------------------------
-- TeamList

data TeamList = TeamList
  { TeamList -> [Team]
_teamListTeams :: [Team],
    TeamList -> Bool
_teamListHasMore :: Bool
  }
  deriving stock (TeamList -> TeamList -> Bool
(TeamList -> TeamList -> Bool)
-> (TeamList -> TeamList -> Bool) -> Eq TeamList
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TeamList -> TeamList -> Bool
== :: TeamList -> TeamList -> Bool
$c/= :: TeamList -> TeamList -> Bool
/= :: TeamList -> TeamList -> Bool
Eq, Int -> TeamList -> ShowS
[TeamList] -> ShowS
TeamList -> String
(Int -> TeamList -> ShowS)
-> (TeamList -> String) -> ([TeamList] -> ShowS) -> Show TeamList
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TeamList -> ShowS
showsPrec :: Int -> TeamList -> ShowS
$cshow :: TeamList -> String
show :: TeamList -> String
$cshowList :: [TeamList] -> ShowS
showList :: [TeamList] -> ShowS
Show, (forall x. TeamList -> Rep TeamList x)
-> (forall x. Rep TeamList x -> TeamList) -> Generic TeamList
forall x. Rep TeamList x -> TeamList
forall x. TeamList -> Rep TeamList x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. TeamList -> Rep TeamList x
from :: forall x. TeamList -> Rep TeamList x
$cto :: forall x. Rep TeamList x -> TeamList
to :: forall x. Rep TeamList x -> TeamList
Generic)
  deriving (Gen TeamList
Gen TeamList -> (TeamList -> [TeamList]) -> Arbitrary TeamList
TeamList -> [TeamList]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen TeamList
arbitrary :: Gen TeamList
$cshrink :: TeamList -> [TeamList]
shrink :: TeamList -> [TeamList]
Arbitrary) via (GenericUniform TeamList)
  deriving ([TeamList] -> Value
[TeamList] -> Encoding
TeamList -> Value
TeamList -> Encoding
(TeamList -> Value)
-> (TeamList -> Encoding)
-> ([TeamList] -> Value)
-> ([TeamList] -> Encoding)
-> ToJSON TeamList
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: TeamList -> Value
toJSON :: TeamList -> Value
$ctoEncoding :: TeamList -> Encoding
toEncoding :: TeamList -> Encoding
$ctoJSONList :: [TeamList] -> Value
toJSONList :: [TeamList] -> Value
$ctoEncodingList :: [TeamList] -> Encoding
toEncodingList :: [TeamList] -> Encoding
ToJSON, Value -> Parser [TeamList]
Value -> Parser TeamList
(Value -> Parser TeamList)
-> (Value -> Parser [TeamList]) -> FromJSON TeamList
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser TeamList
parseJSON :: Value -> Parser TeamList
$cparseJSONList :: Value -> Parser [TeamList]
parseJSONList :: Value -> Parser [TeamList]
FromJSON, Typeable TeamList
Typeable TeamList =>
(Proxy TeamList -> Declare (Definitions Schema) NamedSchema)
-> ToSchema TeamList
Proxy TeamList -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy TeamList -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy TeamList -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via (Schema TeamList)

newTeamList :: [Team] -> Bool -> TeamList
newTeamList :: [Team] -> Bool -> TeamList
newTeamList = [Team] -> Bool -> TeamList
TeamList

instance ToSchema TeamList where
  schema :: ValueSchema NamedSwaggerDoc TeamList
schema =
    Text
-> SchemaP SwaggerDoc Object [Pair] TeamList TeamList
-> ValueSchema NamedSwaggerDoc TeamList
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"TeamList" (SchemaP SwaggerDoc Object [Pair] TeamList TeamList
 -> ValueSchema NamedSwaggerDoc TeamList)
-> SchemaP SwaggerDoc Object [Pair] TeamList TeamList
-> ValueSchema NamedSwaggerDoc TeamList
forall a b. (a -> b) -> a -> b
$
      [Team] -> Bool -> TeamList
TeamList
        ([Team] -> Bool -> TeamList)
-> SchemaP SwaggerDoc Object [Pair] TeamList [Team]
-> SchemaP SwaggerDoc Object [Pair] TeamList (Bool -> TeamList)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> TeamList -> [Team]
_teamListTeams (TeamList -> [Team])
-> SchemaP SwaggerDoc Object [Pair] [Team] [Team]
-> SchemaP SwaggerDoc Object [Pair] TeamList [Team]
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP SwaggerDoc Value Value [Team] [Team]
-> SchemaP SwaggerDoc Object [Pair] [Team] [Team]
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"teams" (ValueSchema NamedSwaggerDoc Team
-> SchemaP SwaggerDoc Value Value [Team] [Team]
forall ndoc doc a.
(HasArray ndoc doc, HasName ndoc) =>
ValueSchema ndoc a -> ValueSchema doc [a]
array ValueSchema NamedSwaggerDoc Team
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)
        SchemaP SwaggerDoc Object [Pair] TeamList (Bool -> TeamList)
-> SchemaP SwaggerDoc Object [Pair] TeamList Bool
-> SchemaP SwaggerDoc Object [Pair] TeamList TeamList
forall a b.
SchemaP SwaggerDoc Object [Pair] TeamList (a -> b)
-> SchemaP SwaggerDoc Object [Pair] TeamList a
-> SchemaP SwaggerDoc Object [Pair] TeamList b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> TeamList -> Bool
_teamListHasMore (TeamList -> Bool)
-> SchemaP SwaggerDoc Object [Pair] Bool Bool
-> SchemaP SwaggerDoc Object [Pair] TeamList Bool
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value Bool Bool
-> SchemaP SwaggerDoc Object [Pair] Bool Bool
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"has_more" SchemaP NamedSwaggerDoc Value Value Bool Bool
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema

--------------------------------------------------------------------------------
-- NewTeam

data NewTeam = NewTeam
  { NewTeam -> Range 1 256 Text
newTeamName :: Range 1 256 Text,
    NewTeam -> Icon
newTeamIcon :: Icon,
    NewTeam -> Maybe (Range 1 256 Text)
newTeamIconKey :: Maybe (Range 1 256 Text)
  }
  deriving stock (NewTeam -> NewTeam -> Bool
(NewTeam -> NewTeam -> Bool)
-> (NewTeam -> NewTeam -> Bool) -> Eq NewTeam
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: NewTeam -> NewTeam -> Bool
== :: NewTeam -> NewTeam -> Bool
$c/= :: NewTeam -> NewTeam -> Bool
/= :: NewTeam -> NewTeam -> Bool
Eq, Int -> NewTeam -> ShowS
[NewTeam] -> ShowS
NewTeam -> String
(Int -> NewTeam -> ShowS)
-> (NewTeam -> String) -> ([NewTeam] -> ShowS) -> Show NewTeam
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> NewTeam -> ShowS
showsPrec :: Int -> NewTeam -> ShowS
$cshow :: NewTeam -> String
show :: NewTeam -> String
$cshowList :: [NewTeam] -> ShowS
showList :: [NewTeam] -> ShowS
Show, (forall x. NewTeam -> Rep NewTeam x)
-> (forall x. Rep NewTeam x -> NewTeam) -> Generic NewTeam
forall x. Rep NewTeam x -> NewTeam
forall x. NewTeam -> Rep NewTeam x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. NewTeam -> Rep NewTeam x
from :: forall x. NewTeam -> Rep NewTeam x
$cto :: forall x. Rep NewTeam x -> NewTeam
to :: forall x. Rep NewTeam x -> NewTeam
Generic)
  deriving ([NewTeam] -> Value
[NewTeam] -> Encoding
NewTeam -> Value
NewTeam -> Encoding
(NewTeam -> Value)
-> (NewTeam -> Encoding)
-> ([NewTeam] -> Value)
-> ([NewTeam] -> Encoding)
-> ToJSON NewTeam
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: NewTeam -> Value
toJSON :: NewTeam -> Value
$ctoEncoding :: NewTeam -> Encoding
toEncoding :: NewTeam -> Encoding
$ctoJSONList :: [NewTeam] -> Value
toJSONList :: [NewTeam] -> Value
$ctoEncodingList :: [NewTeam] -> Encoding
toEncodingList :: [NewTeam] -> Encoding
ToJSON, Value -> Parser [NewTeam]
Value -> Parser NewTeam
(Value -> Parser NewTeam)
-> (Value -> Parser [NewTeam]) -> FromJSON NewTeam
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser NewTeam
parseJSON :: Value -> Parser NewTeam
$cparseJSONList :: Value -> Parser [NewTeam]
parseJSONList :: Value -> Parser [NewTeam]
FromJSON, Typeable NewTeam
Typeable NewTeam =>
(Proxy NewTeam -> Declare (Definitions Schema) NamedSchema)
-> ToSchema NewTeam
Proxy NewTeam -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy NewTeam -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy NewTeam -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via (Schema NewTeam)
  deriving (Gen NewTeam
Gen NewTeam -> (NewTeam -> [NewTeam]) -> Arbitrary NewTeam
NewTeam -> [NewTeam]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen NewTeam
arbitrary :: Gen NewTeam
$cshrink :: NewTeam -> [NewTeam]
shrink :: NewTeam -> [NewTeam]
Arbitrary) via (GenericUniform NewTeam)

newTeamObjectSchema :: ObjectSchema SwaggerDoc NewTeam
newTeamObjectSchema :: ObjectSchema SwaggerDoc NewTeam
newTeamObjectSchema =
  Range 1 256 Text -> Icon -> Maybe (Range 1 256 Text) -> NewTeam
NewTeam
    (Range 1 256 Text -> Icon -> Maybe (Range 1 256 Text) -> NewTeam)
-> SchemaP SwaggerDoc Object [Pair] NewTeam (Range 1 256 Text)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     NewTeam
     (Icon -> Maybe (Range 1 256 Text) -> NewTeam)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NewTeam -> Range 1 256 Text
newTeamName (NewTeam -> Range 1 256 Text)
-> SchemaP
     SwaggerDoc Object [Pair] (Range 1 256 Text) (Range 1 256 Text)
-> SchemaP SwaggerDoc Object [Pair] NewTeam (Range 1 256 Text)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> (NamedSwaggerDoc -> NamedSwaggerDoc)
-> SchemaP
     NamedSwaggerDoc Value Value (Range 1 256 Text) (Range 1 256 Text)
-> SchemaP
     SwaggerDoc Object [Pair] (Range 1 256 Text) (Range 1 256 Text)
forall doc' doc a b.
HasField doc' doc =>
Text
-> (doc' -> doc')
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a b
fieldWithDocModifier Text
"name" ((Maybe Text -> Identity (Maybe Text))
-> NamedSwaggerDoc -> Identity NamedSwaggerDoc
forall s a. HasDescription s a => Lens' s a
Lens' NamedSwaggerDoc (Maybe Text)
description ((Maybe Text -> Identity (Maybe Text))
 -> NamedSwaggerDoc -> Identity NamedSwaggerDoc)
-> Text -> NamedSwaggerDoc -> NamedSwaggerDoc
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ Text
"team name") SchemaP
  NamedSwaggerDoc Value Value (Range 1 256 Text) (Range 1 256 Text)
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
    SchemaP
  SwaggerDoc
  Object
  [Pair]
  NewTeam
  (Icon -> Maybe (Range 1 256 Text) -> NewTeam)
-> SchemaP SwaggerDoc Object [Pair] NewTeam Icon
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     NewTeam
     (Maybe (Range 1 256 Text) -> NewTeam)
forall a b.
SchemaP SwaggerDoc Object [Pair] NewTeam (a -> b)
-> SchemaP SwaggerDoc Object [Pair] NewTeam a
-> SchemaP SwaggerDoc Object [Pair] NewTeam b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> NewTeam -> Icon
newTeamIcon (NewTeam -> Icon)
-> SchemaP SwaggerDoc Object [Pair] Icon Icon
-> SchemaP SwaggerDoc Object [Pair] NewTeam Icon
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> (NamedSwaggerDoc -> NamedSwaggerDoc)
-> SchemaP NamedSwaggerDoc Value Value Icon Icon
-> SchemaP SwaggerDoc Object [Pair] Icon Icon
forall doc' doc a b.
HasField doc' doc =>
Text
-> (doc' -> doc')
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a b
fieldWithDocModifier Text
"icon" ((Maybe Text -> Identity (Maybe Text))
-> NamedSwaggerDoc -> Identity NamedSwaggerDoc
forall s a. HasDescription s a => Lens' s a
Lens' NamedSwaggerDoc (Maybe Text)
description ((Maybe Text -> Identity (Maybe Text))
 -> NamedSwaggerDoc -> Identity NamedSwaggerDoc)
-> Text -> NamedSwaggerDoc -> NamedSwaggerDoc
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ Text
"team icon (asset ID)") SchemaP NamedSwaggerDoc Value Value Icon Icon
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
    SchemaP
  SwaggerDoc
  Object
  [Pair]
  NewTeam
  (Maybe (Range 1 256 Text) -> NewTeam)
-> SchemaP
     SwaggerDoc Object [Pair] NewTeam (Maybe (Range 1 256 Text))
-> ObjectSchema SwaggerDoc NewTeam
forall a b.
SchemaP SwaggerDoc Object [Pair] NewTeam (a -> b)
-> SchemaP SwaggerDoc Object [Pair] NewTeam a
-> SchemaP SwaggerDoc Object [Pair] NewTeam b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> NewTeam -> Maybe (Range 1 256 Text)
newTeamIconKey (NewTeam -> Maybe (Range 1 256 Text))
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Maybe (Range 1 256 Text))
     (Maybe (Range 1 256 Text))
-> SchemaP
     SwaggerDoc Object [Pair] NewTeam (Maybe (Range 1 256 Text))
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= SchemaP
  SwaggerDoc
  Object
  [Pair]
  (Range 1 256 Text)
  (Maybe (Range 1 256 Text))
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Maybe (Range 1 256 Text))
     (Maybe (Range 1 256 Text))
forall w d v a b.
Monoid w =>
SchemaP d v w a b -> SchemaP d v w (Maybe a) b
maybe_ (Text
-> (NamedSwaggerDoc -> NamedSwaggerDoc)
-> SchemaP
     NamedSwaggerDoc Value Value (Range 1 256 Text) (Range 1 256 Text)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Range 1 256 Text)
     (Maybe (Range 1 256 Text))
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> (doc' -> doc')
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optFieldWithDocModifier Text
"icon_key" ((Maybe Text -> Identity (Maybe Text))
-> NamedSwaggerDoc -> Identity NamedSwaggerDoc
forall s a. HasDescription s a => Lens' s a
Lens' NamedSwaggerDoc (Maybe Text)
description ((Maybe Text -> Identity (Maybe Text))
 -> NamedSwaggerDoc -> Identity NamedSwaggerDoc)
-> Text -> NamedSwaggerDoc -> NamedSwaggerDoc
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ Text
"team icon asset key") SchemaP
  NamedSwaggerDoc Value Value (Range 1 256 Text) (Range 1 256 Text)
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)

instance ToSchema NewTeam where
  schema :: ValueSchema NamedSwaggerDoc NewTeam
schema = Text
-> ObjectSchema SwaggerDoc NewTeam
-> ValueSchema NamedSwaggerDoc NewTeam
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"NewTeam" ObjectSchema SwaggerDoc NewTeam
newTeamObjectSchema

newNewTeam :: Range 1 256 Text -> Icon -> NewTeam
newNewTeam :: Range 1 256 Text -> Icon -> NewTeam
newNewTeam Range 1 256 Text
nme Icon
ico = Range 1 256 Text -> Icon -> Maybe (Range 1 256 Text) -> NewTeam
NewTeam Range 1 256 Text
nme Icon
ico Maybe (Range 1 256 Text)
forall a. Maybe a
Nothing

--------------------------------------------------------------------------------
-- TeamUpdateData

data Icon = Icon AssetKey | DefaultIcon
  deriving stock (Icon -> Icon -> Bool
(Icon -> Icon -> Bool) -> (Icon -> Icon -> Bool) -> Eq Icon
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Icon -> Icon -> Bool
== :: Icon -> Icon -> Bool
$c/= :: Icon -> Icon -> Bool
/= :: Icon -> Icon -> Bool
Eq, Int -> Icon -> ShowS
[Icon] -> ShowS
Icon -> String
(Int -> Icon -> ShowS)
-> (Icon -> String) -> ([Icon] -> ShowS) -> Show Icon
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Icon -> ShowS
showsPrec :: Int -> Icon -> ShowS
$cshow :: Icon -> String
show :: Icon -> String
$cshowList :: [Icon] -> ShowS
showList :: [Icon] -> ShowS
Show, (forall x. Icon -> Rep Icon x)
-> (forall x. Rep Icon x -> Icon) -> Generic Icon
forall x. Rep Icon x -> Icon
forall x. Icon -> Rep Icon x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Icon -> Rep Icon x
from :: forall x. Icon -> Rep Icon x
$cto :: forall x. Rep Icon x -> Icon
to :: forall x. Rep Icon x -> Icon
Generic)
  deriving (Gen Icon
Gen Icon -> (Icon -> [Icon]) -> Arbitrary Icon
Icon -> [Icon]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen Icon
arbitrary :: Gen Icon
$cshrink :: Icon -> [Icon]
shrink :: Icon -> [Icon]
Arbitrary) via (GenericUniform Icon)
  deriving ([Icon] -> Value
[Icon] -> Encoding
Icon -> Value
Icon -> Encoding
(Icon -> Value)
-> (Icon -> Encoding)
-> ([Icon] -> Value)
-> ([Icon] -> Encoding)
-> ToJSON Icon
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: Icon -> Value
toJSON :: Icon -> Value
$ctoEncoding :: Icon -> Encoding
toEncoding :: Icon -> Encoding
$ctoJSONList :: [Icon] -> Value
toJSONList :: [Icon] -> Value
$ctoEncodingList :: [Icon] -> Encoding
toEncodingList :: [Icon] -> Encoding
ToJSON, Value -> Parser [Icon]
Value -> Parser Icon
(Value -> Parser Icon) -> (Value -> Parser [Icon]) -> FromJSON Icon
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser Icon
parseJSON :: Value -> Parser Icon
$cparseJSONList :: Value -> Parser [Icon]
parseJSONList :: Value -> Parser [Icon]
FromJSON, Typeable Icon
Typeable Icon =>
(Proxy Icon -> Declare (Definitions Schema) NamedSchema)
-> ToSchema Icon
Proxy Icon -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy Icon -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy Icon -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via Schema Icon

instance FromByteString Icon where
  parser :: Parser Icon
parser =
    [Parser Icon] -> Parser Icon
forall (f :: * -> *) a. Alternative f => [f a] -> f a
choice
      [ AssetKey -> Icon
Icon (AssetKey -> Icon) -> Parser ByteString AssetKey -> Parser Icon
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Parser ByteString AssetKey
forall a. FromByteString a => Parser a
parser :: Atto.Parser AssetKey),
        Icon
DefaultIcon Icon -> Parser ByteString ByteString -> Parser Icon
forall a b. a -> Parser ByteString b -> Parser ByteString a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ ByteString -> Parser ByteString ByteString
Atto.string ByteString
"default"
      ]

instance ToByteString Icon where
  builder :: Icon -> Builder
builder (Icon AssetKey
key) = AssetKey -> Builder
forall a. ToByteString a => a -> Builder
builder AssetKey
key
  builder Icon
DefaultIcon = Builder
"default"

instance ToSchema Icon where
  schema :: SchemaP NamedSwaggerDoc Value Value Icon Icon
schema =
    (ByteString -> Text
T.decodeUtf8 (ByteString -> Text) -> (Icon -> ByteString) -> Icon -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Icon -> ByteString
forall a. ToByteString a => a -> ByteString
toByteString')
      (Icon -> Text)
-> SchemaP NamedSwaggerDoc Value Value Text Icon
-> SchemaP NamedSwaggerDoc Value Value Icon Icon
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> (Text -> Either String Icon)
-> SchemaP NamedSwaggerDoc Value Value Text Icon
forall a.
Text
-> (Text -> Either String a)
-> SchemaP NamedSwaggerDoc Value Value Text a
parsedText Text
"Icon" (Parser Icon -> ByteString -> Either String Icon
forall a. Parser a -> ByteString -> Either String a
runParser Parser Icon
forall a. FromByteString a => Parser a
parser (ByteString -> Either String Icon)
-> (Text -> ByteString) -> Text -> Either String Icon
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
T.encodeUtf8)

data TeamUpdateData = TeamUpdateData
  { TeamUpdateData -> Maybe (Range 1 256 Text)
_nameUpdate :: Maybe (Range 1 256 Text),
    TeamUpdateData -> Maybe Icon
_iconUpdate :: Maybe Icon,
    TeamUpdateData -> Maybe (Range 1 256 Text)
_iconKeyUpdate :: Maybe (Range 1 256 Text),
    TeamUpdateData -> Maybe Icon
_splashScreenUpdate :: Maybe Icon
  }
  deriving stock (TeamUpdateData -> TeamUpdateData -> Bool
(TeamUpdateData -> TeamUpdateData -> Bool)
-> (TeamUpdateData -> TeamUpdateData -> Bool) -> Eq TeamUpdateData
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TeamUpdateData -> TeamUpdateData -> Bool
== :: TeamUpdateData -> TeamUpdateData -> Bool
$c/= :: TeamUpdateData -> TeamUpdateData -> Bool
/= :: TeamUpdateData -> TeamUpdateData -> Bool
Eq, Int -> TeamUpdateData -> ShowS
[TeamUpdateData] -> ShowS
TeamUpdateData -> String
(Int -> TeamUpdateData -> ShowS)
-> (TeamUpdateData -> String)
-> ([TeamUpdateData] -> ShowS)
-> Show TeamUpdateData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TeamUpdateData -> ShowS
showsPrec :: Int -> TeamUpdateData -> ShowS
$cshow :: TeamUpdateData -> String
show :: TeamUpdateData -> String
$cshowList :: [TeamUpdateData] -> ShowS
showList :: [TeamUpdateData] -> ShowS
Show, (forall x. TeamUpdateData -> Rep TeamUpdateData x)
-> (forall x. Rep TeamUpdateData x -> TeamUpdateData)
-> Generic TeamUpdateData
forall x. Rep TeamUpdateData x -> TeamUpdateData
forall x. TeamUpdateData -> Rep TeamUpdateData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. TeamUpdateData -> Rep TeamUpdateData x
from :: forall x. TeamUpdateData -> Rep TeamUpdateData x
$cto :: forall x. Rep TeamUpdateData x -> TeamUpdateData
to :: forall x. Rep TeamUpdateData x -> TeamUpdateData
Generic)
  deriving ([TeamUpdateData] -> Value
[TeamUpdateData] -> Encoding
TeamUpdateData -> Value
TeamUpdateData -> Encoding
(TeamUpdateData -> Value)
-> (TeamUpdateData -> Encoding)
-> ([TeamUpdateData] -> Value)
-> ([TeamUpdateData] -> Encoding)
-> ToJSON TeamUpdateData
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: TeamUpdateData -> Value
toJSON :: TeamUpdateData -> Value
$ctoEncoding :: TeamUpdateData -> Encoding
toEncoding :: TeamUpdateData -> Encoding
$ctoJSONList :: [TeamUpdateData] -> Value
toJSONList :: [TeamUpdateData] -> Value
$ctoEncodingList :: [TeamUpdateData] -> Encoding
toEncodingList :: [TeamUpdateData] -> Encoding
ToJSON, Value -> Parser [TeamUpdateData]
Value -> Parser TeamUpdateData
(Value -> Parser TeamUpdateData)
-> (Value -> Parser [TeamUpdateData]) -> FromJSON TeamUpdateData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser TeamUpdateData
parseJSON :: Value -> Parser TeamUpdateData
$cparseJSONList :: Value -> Parser [TeamUpdateData]
parseJSONList :: Value -> Parser [TeamUpdateData]
FromJSON, Typeable TeamUpdateData
Typeable TeamUpdateData =>
(Proxy TeamUpdateData -> Declare (Definitions Schema) NamedSchema)
-> ToSchema TeamUpdateData
Proxy TeamUpdateData -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy TeamUpdateData -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy TeamUpdateData -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via (Schema TeamUpdateData)

instance Arbitrary TeamUpdateData where
  arbitrary :: Gen TeamUpdateData
arbitrary = Gen TeamUpdateData
arb Gen TeamUpdateData
-> (TeamUpdateData -> Bool) -> Gen TeamUpdateData
forall a. Gen a -> (a -> Bool) -> Gen a
`suchThat` TeamUpdateData -> Bool
valid
    where
      arb :: Gen TeamUpdateData
arb = Maybe (Range 1 256 Text)
-> Maybe Icon
-> Maybe (Range 1 256 Text)
-> Maybe Icon
-> TeamUpdateData
TeamUpdateData (Maybe (Range 1 256 Text)
 -> Maybe Icon
 -> Maybe (Range 1 256 Text)
 -> Maybe Icon
 -> TeamUpdateData)
-> Gen (Maybe (Range 1 256 Text))
-> Gen
     (Maybe Icon
      -> Maybe (Range 1 256 Text) -> Maybe Icon -> TeamUpdateData)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Maybe (Range 1 256 Text))
forall a. Arbitrary a => Gen a
arbitrary Gen
  (Maybe Icon
   -> Maybe (Range 1 256 Text) -> Maybe Icon -> TeamUpdateData)
-> Gen (Maybe Icon)
-> Gen (Maybe (Range 1 256 Text) -> Maybe Icon -> TeamUpdateData)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Maybe Icon)
forall a. Arbitrary a => Gen a
arbitrary Gen (Maybe (Range 1 256 Text) -> Maybe Icon -> TeamUpdateData)
-> Gen (Maybe (Range 1 256 Text))
-> Gen (Maybe Icon -> TeamUpdateData)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Maybe (Range 1 256 Text))
forall a. Arbitrary a => Gen a
arbitrary Gen (Maybe Icon -> TeamUpdateData)
-> Gen (Maybe Icon) -> Gen TeamUpdateData
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Maybe Icon)
forall a. Arbitrary a => Gen a
arbitrary
      valid :: TeamUpdateData -> Bool
valid (TeamUpdateData Maybe (Range 1 256 Text)
Nothing Maybe Icon
Nothing Maybe (Range 1 256 Text)
Nothing Maybe Icon
Nothing) = Bool
False
      valid TeamUpdateData
_ = Bool
True

newTeamUpdateData :: TeamUpdateData
newTeamUpdateData :: TeamUpdateData
newTeamUpdateData = Maybe (Range 1 256 Text)
-> Maybe Icon
-> Maybe (Range 1 256 Text)
-> Maybe Icon
-> TeamUpdateData
TeamUpdateData Maybe (Range 1 256 Text)
forall a. Maybe a
Nothing Maybe Icon
forall a. Maybe a
Nothing Maybe (Range 1 256 Text)
forall a. Maybe a
Nothing Maybe Icon
forall a. Maybe a
Nothing

validateTeamUpdateData :: TeamUpdateData -> Parser TeamUpdateData
validateTeamUpdateData :: TeamUpdateData -> Parser TeamUpdateData
validateTeamUpdateData TeamUpdateData
u =
  Bool -> Parser () -> Parser ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when
    (Maybe (Range 1 256 Text) -> Bool
forall a. Maybe a -> Bool
isNothing (TeamUpdateData -> Maybe (Range 1 256 Text)
_nameUpdate TeamUpdateData
u) Bool -> Bool -> Bool
&& Maybe Icon -> Bool
forall a. Maybe a -> Bool
isNothing (TeamUpdateData -> Maybe Icon
_iconUpdate TeamUpdateData
u) Bool -> Bool -> Bool
&& Maybe (Range 1 256 Text) -> Bool
forall a. Maybe a -> Bool
isNothing (TeamUpdateData -> Maybe (Range 1 256 Text)
_iconKeyUpdate TeamUpdateData
u) Bool -> Bool -> Bool
&& Maybe Icon -> Bool
forall a. Maybe a -> Bool
isNothing (TeamUpdateData -> Maybe Icon
_splashScreenUpdate TeamUpdateData
u))
    (String -> Parser ()
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"TeamUpdateData: no update data specified")
    Parser () -> TeamUpdateData -> Parser TeamUpdateData
forall (f :: * -> *) a b. Functor f => f a -> b -> f b
$> TeamUpdateData
u

instance ToSchema TeamUpdateData where
  schema :: ValueSchema NamedSwaggerDoc TeamUpdateData
schema =
    (ValueSchema NamedSwaggerDoc TeamUpdateData
-> (TeamUpdateData -> Parser TeamUpdateData)
-> ValueSchema NamedSwaggerDoc TeamUpdateData
forall doc v w a b b'.
SchemaP doc v w a b -> (b -> Parser b') -> SchemaP doc v w a b'
`withParser` TeamUpdateData -> Parser TeamUpdateData
validateTeamUpdateData)
      (ValueSchema NamedSwaggerDoc TeamUpdateData
 -> ValueSchema NamedSwaggerDoc TeamUpdateData)
-> (SchemaP SwaggerDoc Object [Pair] TeamUpdateData TeamUpdateData
    -> ValueSchema NamedSwaggerDoc TeamUpdateData)
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData TeamUpdateData
-> ValueSchema NamedSwaggerDoc TeamUpdateData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData TeamUpdateData
-> ValueSchema NamedSwaggerDoc TeamUpdateData
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"TeamUpdateData"
      (SchemaP SwaggerDoc Object [Pair] TeamUpdateData TeamUpdateData
 -> ValueSchema NamedSwaggerDoc TeamUpdateData)
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData TeamUpdateData
-> ValueSchema NamedSwaggerDoc TeamUpdateData
forall a b. (a -> b) -> a -> b
$ Maybe (Range 1 256 Text)
-> Maybe Icon
-> Maybe (Range 1 256 Text)
-> Maybe Icon
-> TeamUpdateData
TeamUpdateData
        (Maybe (Range 1 256 Text)
 -> Maybe Icon
 -> Maybe (Range 1 256 Text)
 -> Maybe Icon
 -> TeamUpdateData)
-> SchemaP
     SwaggerDoc Object [Pair] TeamUpdateData (Maybe (Range 1 256 Text))
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     TeamUpdateData
     (Maybe Icon
      -> Maybe (Range 1 256 Text) -> Maybe Icon -> TeamUpdateData)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> TeamUpdateData -> Maybe (Range 1 256 Text)
_nameUpdate (TeamUpdateData -> Maybe (Range 1 256 Text))
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Maybe (Range 1 256 Text))
     (Maybe (Range 1 256 Text))
-> SchemaP
     SwaggerDoc Object [Pair] TeamUpdateData (Maybe (Range 1 256 Text))
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= SchemaP
  SwaggerDoc
  Object
  [Pair]
  (Range 1 256 Text)
  (Maybe (Range 1 256 Text))
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Maybe (Range 1 256 Text))
     (Maybe (Range 1 256 Text))
forall w d v a b.
Monoid w =>
SchemaP d v w a b -> SchemaP d v w (Maybe a) b
maybe_ (Text
-> SchemaP
     NamedSwaggerDoc Value Value (Range 1 256 Text) (Range 1 256 Text)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Range 1 256 Text)
     (Maybe (Range 1 256 Text))
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optField Text
"name" SchemaP
  NamedSwaggerDoc Value Value (Range 1 256 Text) (Range 1 256 Text)
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  TeamUpdateData
  (Maybe Icon
   -> Maybe (Range 1 256 Text) -> Maybe Icon -> TeamUpdateData)
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData (Maybe Icon)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     TeamUpdateData
     (Maybe (Range 1 256 Text) -> Maybe Icon -> TeamUpdateData)
forall a b.
SchemaP SwaggerDoc Object [Pair] TeamUpdateData (a -> b)
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData a
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> TeamUpdateData -> Maybe Icon
_iconUpdate (TeamUpdateData -> Maybe Icon)
-> SchemaP SwaggerDoc Object [Pair] (Maybe Icon) (Maybe Icon)
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData (Maybe Icon)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= SchemaP SwaggerDoc Object [Pair] Icon (Maybe Icon)
-> SchemaP SwaggerDoc Object [Pair] (Maybe Icon) (Maybe Icon)
forall w d v a b.
Monoid w =>
SchemaP d v w a b -> SchemaP d v w (Maybe a) b
maybe_ (Text
-> SchemaP NamedSwaggerDoc Value Value Icon Icon
-> SchemaP SwaggerDoc Object [Pair] Icon (Maybe Icon)
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optField Text
"icon" SchemaP NamedSwaggerDoc Value Value Icon Icon
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  TeamUpdateData
  (Maybe (Range 1 256 Text) -> Maybe Icon -> TeamUpdateData)
-> SchemaP
     SwaggerDoc Object [Pair] TeamUpdateData (Maybe (Range 1 256 Text))
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     TeamUpdateData
     (Maybe Icon -> TeamUpdateData)
forall a b.
SchemaP SwaggerDoc Object [Pair] TeamUpdateData (a -> b)
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData a
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> TeamUpdateData -> Maybe (Range 1 256 Text)
_iconKeyUpdate (TeamUpdateData -> Maybe (Range 1 256 Text))
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Maybe (Range 1 256 Text))
     (Maybe (Range 1 256 Text))
-> SchemaP
     SwaggerDoc Object [Pair] TeamUpdateData (Maybe (Range 1 256 Text))
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= SchemaP
  SwaggerDoc
  Object
  [Pair]
  (Range 1 256 Text)
  (Maybe (Range 1 256 Text))
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Maybe (Range 1 256 Text))
     (Maybe (Range 1 256 Text))
forall w d v a b.
Monoid w =>
SchemaP d v w a b -> SchemaP d v w (Maybe a) b
maybe_ (Text
-> SchemaP
     NamedSwaggerDoc Value Value (Range 1 256 Text) (Range 1 256 Text)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Range 1 256 Text)
     (Maybe (Range 1 256 Text))
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optField Text
"icon_key" SchemaP
  NamedSwaggerDoc Value Value (Range 1 256 Text) (Range 1 256 Text)
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  TeamUpdateData
  (Maybe Icon -> TeamUpdateData)
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData (Maybe Icon)
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData TeamUpdateData
forall a b.
SchemaP SwaggerDoc Object [Pair] TeamUpdateData (a -> b)
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData a
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> TeamUpdateData -> Maybe Icon
_splashScreenUpdate (TeamUpdateData -> Maybe Icon)
-> SchemaP SwaggerDoc Object [Pair] (Maybe Icon) (Maybe Icon)
-> SchemaP SwaggerDoc Object [Pair] TeamUpdateData (Maybe Icon)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= SchemaP SwaggerDoc Object [Pair] Icon (Maybe Icon)
-> SchemaP SwaggerDoc Object [Pair] (Maybe Icon) (Maybe Icon)
forall w d v a b.
Monoid w =>
SchemaP d v w a b -> SchemaP d v w (Maybe a) b
maybe_ (Text
-> SchemaP NamedSwaggerDoc Value Value Icon Icon
-> SchemaP SwaggerDoc Object [Pair] Icon (Maybe Icon)
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optField Text
"splash_screen" SchemaP NamedSwaggerDoc Value Value Icon Icon
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)

--------------------------------------------------------------------------------
-- TeamDeleteData

data TeamDeleteData = TeamDeleteData
  { TeamDeleteData -> Maybe PlainTextPassword6
_tdAuthPassword :: Maybe PlainTextPassword6,
    TeamDeleteData -> Maybe Value
_tdVerificationCode :: Maybe Code.Value
  }
  deriving stock (TeamDeleteData -> TeamDeleteData -> Bool
(TeamDeleteData -> TeamDeleteData -> Bool)
-> (TeamDeleteData -> TeamDeleteData -> Bool) -> Eq TeamDeleteData
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TeamDeleteData -> TeamDeleteData -> Bool
== :: TeamDeleteData -> TeamDeleteData -> Bool
$c/= :: TeamDeleteData -> TeamDeleteData -> Bool
/= :: TeamDeleteData -> TeamDeleteData -> Bool
Eq, Int -> TeamDeleteData -> ShowS
[TeamDeleteData] -> ShowS
TeamDeleteData -> String
(Int -> TeamDeleteData -> ShowS)
-> (TeamDeleteData -> String)
-> ([TeamDeleteData] -> ShowS)
-> Show TeamDeleteData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TeamDeleteData -> ShowS
showsPrec :: Int -> TeamDeleteData -> ShowS
$cshow :: TeamDeleteData -> String
show :: TeamDeleteData -> String
$cshowList :: [TeamDeleteData] -> ShowS
showList :: [TeamDeleteData] -> ShowS
Show)
  deriving ([TeamDeleteData] -> Value
[TeamDeleteData] -> Encoding
TeamDeleteData -> Value
TeamDeleteData -> Encoding
(TeamDeleteData -> Value)
-> (TeamDeleteData -> Encoding)
-> ([TeamDeleteData] -> Value)
-> ([TeamDeleteData] -> Encoding)
-> ToJSON TeamDeleteData
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: TeamDeleteData -> Value
toJSON :: TeamDeleteData -> Value
$ctoEncoding :: TeamDeleteData -> Encoding
toEncoding :: TeamDeleteData -> Encoding
$ctoJSONList :: [TeamDeleteData] -> Value
toJSONList :: [TeamDeleteData] -> Value
$ctoEncodingList :: [TeamDeleteData] -> Encoding
toEncodingList :: [TeamDeleteData] -> Encoding
ToJSON, Value -> Parser [TeamDeleteData]
Value -> Parser TeamDeleteData
(Value -> Parser TeamDeleteData)
-> (Value -> Parser [TeamDeleteData]) -> FromJSON TeamDeleteData
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser TeamDeleteData
parseJSON :: Value -> Parser TeamDeleteData
$cparseJSONList :: Value -> Parser [TeamDeleteData]
parseJSONList :: Value -> Parser [TeamDeleteData]
FromJSON, Typeable TeamDeleteData
Typeable TeamDeleteData =>
(Proxy TeamDeleteData -> Declare (Definitions Schema) NamedSchema)
-> ToSchema TeamDeleteData
Proxy TeamDeleteData -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy TeamDeleteData -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy TeamDeleteData -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via (Schema TeamDeleteData)

instance Arbitrary TeamDeleteData where
  arbitrary :: Gen TeamDeleteData
arbitrary = Maybe PlainTextPassword6 -> Maybe Value -> TeamDeleteData
TeamDeleteData (Maybe PlainTextPassword6 -> Maybe Value -> TeamDeleteData)
-> Gen (Maybe PlainTextPassword6)
-> Gen (Maybe Value -> TeamDeleteData)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Maybe PlainTextPassword6)
forall a. Arbitrary a => Gen a
arbitrary Gen (Maybe Value -> TeamDeleteData)
-> Gen (Maybe Value) -> Gen TeamDeleteData
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Maybe Value)
forall a. Arbitrary a => Gen a
arbitrary

newTeamDeleteData :: Maybe PlainTextPassword6 -> TeamDeleteData
newTeamDeleteData :: Maybe PlainTextPassword6 -> TeamDeleteData
newTeamDeleteData = (Maybe PlainTextPassword6 -> Maybe Value -> TeamDeleteData)
-> Maybe Value -> Maybe PlainTextPassword6 -> TeamDeleteData
forall a b c. (a -> b -> c) -> b -> a -> c
flip Maybe PlainTextPassword6 -> Maybe Value -> TeamDeleteData
TeamDeleteData Maybe Value
forall a. Maybe a
Nothing

newTeamDeleteDataWithCode :: Maybe PlainTextPassword6 -> Maybe Code.Value -> TeamDeleteData
newTeamDeleteDataWithCode :: Maybe PlainTextPassword6 -> Maybe Value -> TeamDeleteData
newTeamDeleteDataWithCode = Maybe PlainTextPassword6 -> Maybe Value -> TeamDeleteData
TeamDeleteData

instance ToSchema TeamDeleteData where
  schema :: ValueSchema NamedSwaggerDoc TeamDeleteData
schema =
    Text
-> SchemaP SwaggerDoc Object [Pair] TeamDeleteData TeamDeleteData
-> ValueSchema NamedSwaggerDoc TeamDeleteData
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"TeamDeleteData" (SchemaP SwaggerDoc Object [Pair] TeamDeleteData TeamDeleteData
 -> ValueSchema NamedSwaggerDoc TeamDeleteData)
-> SchemaP SwaggerDoc Object [Pair] TeamDeleteData TeamDeleteData
-> ValueSchema NamedSwaggerDoc TeamDeleteData
forall a b. (a -> b) -> a -> b
$
      Maybe PlainTextPassword6 -> Maybe Value -> TeamDeleteData
TeamDeleteData
        (Maybe PlainTextPassword6 -> Maybe Value -> TeamDeleteData)
-> SchemaP
     SwaggerDoc Object [Pair] TeamDeleteData (Maybe PlainTextPassword6)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     TeamDeleteData
     (Maybe Value -> TeamDeleteData)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> TeamDeleteData -> Maybe PlainTextPassword6
_tdAuthPassword (TeamDeleteData -> Maybe PlainTextPassword6)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Maybe PlainTextPassword6)
     (Maybe PlainTextPassword6)
-> SchemaP
     SwaggerDoc Object [Pair] TeamDeleteData (Maybe PlainTextPassword6)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP
     NamedSwaggerDoc
     Value
     Value
     (Maybe PlainTextPassword6)
     PlainTextPassword6
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Maybe PlainTextPassword6)
     (Maybe PlainTextPassword6)
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optField Text
"password" (Value
-> SchemaP
     NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
-> SchemaP
     NamedSwaggerDoc
     Value
     Value
     (Maybe PlainTextPassword6)
     PlainTextPassword6
forall w d v a b.
w -> SchemaP d v w a b -> SchemaP d v w (Maybe a) b
maybeWithDefault Value
Null SchemaP
  NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  TeamDeleteData
  (Maybe Value -> TeamDeleteData)
-> SchemaP SwaggerDoc Object [Pair] TeamDeleteData (Maybe Value)
-> SchemaP SwaggerDoc Object [Pair] TeamDeleteData TeamDeleteData
forall a b.
SchemaP SwaggerDoc Object [Pair] TeamDeleteData (a -> b)
-> SchemaP SwaggerDoc Object [Pair] TeamDeleteData a
-> SchemaP SwaggerDoc Object [Pair] TeamDeleteData b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> TeamDeleteData -> Maybe Value
_tdVerificationCode (TeamDeleteData -> Maybe Value)
-> SchemaP SwaggerDoc Object [Pair] (Maybe Value) (Maybe Value)
-> SchemaP SwaggerDoc Object [Pair] TeamDeleteData (Maybe Value)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= SchemaP SwaggerDoc Object [Pair] Value (Maybe Value)
-> SchemaP SwaggerDoc Object [Pair] (Maybe Value) (Maybe Value)
forall w d v a b.
Monoid w =>
SchemaP d v w a b -> SchemaP d v w (Maybe a) b
maybe_ (Text
-> SchemaP NamedSwaggerDoc Value Value Value Value
-> SchemaP SwaggerDoc Object [Pair] Value (Maybe Value)
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optField Text
"verification_code" SchemaP NamedSwaggerDoc Value Value Value Value
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)

makeLenses ''Team
makeLenses ''TeamList
makeLenses ''TeamUpdateData
makeLenses ''TeamDeleteData