{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DerivingStrategies #-}

module Hercules.API.Organizations.Organization where

import Data.OpenApi qualified as O3
import Hercules.API.BillingStatus qualified as BillingStatus
import Hercules.API.Prelude

data Organization = Organization
  { Organization -> Id Organization
id :: Id Organization,
    Organization -> Text
displayName :: Text,
    Organization -> BillingStatus
billingStatus :: BillingStatus.BillingStatus,
    Organization -> Maybe UTCTime
trialStartedOn :: Maybe UTCTime,
    Organization -> Maybe UTCTime
subscriptionStartedOn :: Maybe UTCTime,
    Organization -> Maybe UTCTime
subscriptionCancelledOn :: Maybe UTCTime,
    Organization -> Maybe Text
subscriptionCancelUrl :: Maybe Text,
    Organization -> Maybe Text
subscriptionUpdateUrl :: Maybe Text
  }
  deriving ((forall x. Organization -> Rep Organization x)
-> (forall x. Rep Organization x -> Organization)
-> Generic Organization
forall x. Rep Organization x -> Organization
forall x. Organization -> Rep Organization x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Organization -> Rep Organization x
from :: forall x. Organization -> Rep Organization x
$cto :: forall x. Rep Organization x -> Organization
to :: forall x. Rep Organization x -> Organization
Generic, Int -> Organization -> ShowS
[Organization] -> ShowS
Organization -> String
(Int -> Organization -> ShowS)
-> (Organization -> String)
-> ([Organization] -> ShowS)
-> Show Organization
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Organization -> ShowS
showsPrec :: Int -> Organization -> ShowS
$cshow :: Organization -> String
show :: Organization -> String
$cshowList :: [Organization] -> ShowS
showList :: [Organization] -> ShowS
Show, Organization -> Organization -> Bool
(Organization -> Organization -> Bool)
-> (Organization -> Organization -> Bool) -> Eq Organization
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Organization -> Organization -> Bool
== :: Organization -> Organization -> Bool
$c/= :: Organization -> Organization -> Bool
/= :: Organization -> Organization -> Bool
Eq)
  deriving anyclass (Organization -> ()
(Organization -> ()) -> NFData Organization
forall a. (a -> ()) -> NFData a
$crnf :: Organization -> ()
rnf :: Organization -> ()
NFData, [Organization] -> Value
[Organization] -> Encoding
Organization -> Value
Organization -> Encoding
(Organization -> Value)
-> (Organization -> Encoding)
-> ([Organization] -> Value)
-> ([Organization] -> Encoding)
-> ToJSON Organization
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: Organization -> Value
toJSON :: Organization -> Value
$ctoEncoding :: Organization -> Encoding
toEncoding :: Organization -> Encoding
$ctoJSONList :: [Organization] -> Value
toJSONList :: [Organization] -> Value
$ctoEncodingList :: [Organization] -> Encoding
toEncodingList :: [Organization] -> Encoding
ToJSON, Value -> Parser [Organization]
Value -> Parser Organization
(Value -> Parser Organization)
-> (Value -> Parser [Organization]) -> FromJSON Organization
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser Organization
parseJSON :: Value -> Parser Organization
$cparseJSONList :: Value -> Parser [Organization]
parseJSONList :: Value -> Parser [Organization]
FromJSON, Proxy Organization -> Declare (Definitions Schema) NamedSchema
(Proxy Organization -> Declare (Definitions Schema) NamedSchema)
-> ToSchema Organization
forall a.
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy Organization -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy Organization -> Declare (Definitions Schema) NamedSchema
ToSchema, Typeable Organization
Typeable Organization =>
(Proxy Organization -> Declare (Definitions Schema) NamedSchema)
-> ToSchema Organization
Proxy Organization -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy Organization -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy Organization -> Declare (Definitions Schema) NamedSchema
O3.ToSchema)