{-# LANGUAGE MultiWayIf #-}
-- CHANGE WITH CAUTION: This is a generated code file generated by https://github.com/Haskell-OpenAPI-Code-Generator/Haskell-OpenAPI-Client-Code-Generator.
{-# LANGUAGE OverloadedStrings #-}

-- | Contains the types generated from the schema GelatoIdNumberReport
module StripeAPI.Types.GelatoIdNumberReport where

import qualified Control.Monad.Fail
import qualified Data.Aeson
import qualified Data.Aeson as Data.Aeson.Encoding.Internal
import qualified Data.Aeson as Data.Aeson.Types
import qualified Data.Aeson as Data.Aeson.Types.FromJSON
import qualified Data.Aeson as Data.Aeson.Types.Internal
import qualified Data.Aeson as Data.Aeson.Types.ToJSON
import qualified Data.ByteString.Char8
import qualified Data.ByteString.Char8 as Data.ByteString.Internal
import qualified Data.Functor
import qualified Data.Scientific
import qualified Data.Text
import qualified Data.Text.Internal
import qualified Data.Time.Calendar as Data.Time.Calendar.Days
import qualified Data.Time.LocalTime as Data.Time.LocalTime.Internal.ZonedTime
import qualified GHC.Base
import qualified GHC.Classes
import qualified GHC.Int
import qualified GHC.Show
import qualified GHC.Types
import qualified StripeAPI.Common
import StripeAPI.TypeAlias
import {-# SOURCE #-} StripeAPI.Types.GelatoDataIdNumberReportDate
import {-# SOURCE #-} StripeAPI.Types.GelatoIdNumberReportError
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.gelato_id_number_report@ in the specification.
--
-- Result from an id_number check
data GelatoIdNumberReport = GelatoIdNumberReport
  { -- | dob: Date of birth.
    GelatoIdNumberReport -> Maybe GelatoIdNumberReportDob'
gelatoIdNumberReportDob :: (GHC.Maybe.Maybe GelatoIdNumberReportDob'),
    -- | error: Details on the verification error. Present when status is \`unverified\`.
    GelatoIdNumberReport -> Maybe GelatoIdNumberReportError'
gelatoIdNumberReportError :: (GHC.Maybe.Maybe GelatoIdNumberReportError'),
    -- | first_name: First name.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GelatoIdNumberReport -> Maybe Text
gelatoIdNumberReportFirstName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | id_number: ID number.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GelatoIdNumberReport -> Maybe Text
gelatoIdNumberReportIdNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | id_number_type: Type of ID number.
    GelatoIdNumberReport -> Maybe GelatoIdNumberReportIdNumberType'
gelatoIdNumberReportIdNumberType :: (GHC.Maybe.Maybe GelatoIdNumberReportIdNumberType'),
    -- | last_name: Last name.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GelatoIdNumberReport -> Maybe Text
gelatoIdNumberReportLastName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | status: Status of this \`id_number\` check.
    GelatoIdNumberReport -> GelatoIdNumberReportStatus'
gelatoIdNumberReportStatus :: GelatoIdNumberReportStatus'
  }
  deriving
    ( Int -> GelatoIdNumberReport -> ShowS
[GelatoIdNumberReport] -> ShowS
GelatoIdNumberReport -> String
(Int -> GelatoIdNumberReport -> ShowS)
-> (GelatoIdNumberReport -> String)
-> ([GelatoIdNumberReport] -> ShowS)
-> Show GelatoIdNumberReport
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GelatoIdNumberReport] -> ShowS
$cshowList :: [GelatoIdNumberReport] -> ShowS
show :: GelatoIdNumberReport -> String
$cshow :: GelatoIdNumberReport -> String
showsPrec :: Int -> GelatoIdNumberReport -> ShowS
$cshowsPrec :: Int -> GelatoIdNumberReport -> ShowS
GHC.Show.Show,
      GelatoIdNumberReport -> GelatoIdNumberReport -> Bool
(GelatoIdNumberReport -> GelatoIdNumberReport -> Bool)
-> (GelatoIdNumberReport -> GelatoIdNumberReport -> Bool)
-> Eq GelatoIdNumberReport
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GelatoIdNumberReport -> GelatoIdNumberReport -> Bool
$c/= :: GelatoIdNumberReport -> GelatoIdNumberReport -> Bool
== :: GelatoIdNumberReport -> GelatoIdNumberReport -> Bool
$c== :: GelatoIdNumberReport -> GelatoIdNumberReport -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON GelatoIdNumberReport where
  toJSON :: GelatoIdNumberReport -> Value
toJSON GelatoIdNumberReport
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"dob" Text -> Maybe GelatoIdNumberReportDob' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> Maybe GelatoIdNumberReportDob'
gelatoIdNumberReportDob GelatoIdNumberReport
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"error" Text -> Maybe GelatoIdNumberReportError' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> Maybe GelatoIdNumberReportError'
gelatoIdNumberReportError GelatoIdNumberReport
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"first_name" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> Maybe Text
gelatoIdNumberReportFirstName GelatoIdNumberReport
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"id_number" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> Maybe Text
gelatoIdNumberReportIdNumber GelatoIdNumberReport
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"id_number_type" Text -> Maybe GelatoIdNumberReportIdNumberType' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> Maybe GelatoIdNumberReportIdNumberType'
gelatoIdNumberReportIdNumberType GelatoIdNumberReport
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"last_name" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> Maybe Text
gelatoIdNumberReportLastName GelatoIdNumberReport
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"status" Text -> GelatoIdNumberReportStatus' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> GelatoIdNumberReportStatus'
gelatoIdNumberReportStatus GelatoIdNumberReport
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: GelatoIdNumberReport -> Encoding
toEncoding GelatoIdNumberReport
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"dob" Text -> Maybe GelatoIdNumberReportDob' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> Maybe GelatoIdNumberReportDob'
gelatoIdNumberReportDob GelatoIdNumberReport
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"error" Text -> Maybe GelatoIdNumberReportError' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> Maybe GelatoIdNumberReportError'
gelatoIdNumberReportError GelatoIdNumberReport
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"first_name" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> Maybe Text
gelatoIdNumberReportFirstName GelatoIdNumberReport
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"id_number" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> Maybe Text
gelatoIdNumberReportIdNumber GelatoIdNumberReport
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"id_number_type" Text -> Maybe GelatoIdNumberReportIdNumberType' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> Maybe GelatoIdNumberReportIdNumberType'
gelatoIdNumberReportIdNumberType GelatoIdNumberReport
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"last_name" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> Maybe Text
gelatoIdNumberReportLastName GelatoIdNumberReport
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"status" Text -> GelatoIdNumberReportStatus' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReport -> GelatoIdNumberReportStatus'
gelatoIdNumberReportStatus GelatoIdNumberReport
obj)))))))

instance Data.Aeson.Types.FromJSON.FromJSON GelatoIdNumberReport where
  parseJSON :: Value -> Parser GelatoIdNumberReport
parseJSON = String
-> (Object -> Parser GelatoIdNumberReport)
-> Value
-> Parser GelatoIdNumberReport
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"GelatoIdNumberReport" (\Object
obj -> (((((((Maybe GelatoIdNumberReportDob'
 -> Maybe GelatoIdNumberReportError'
 -> Maybe Text
 -> Maybe Text
 -> Maybe GelatoIdNumberReportIdNumberType'
 -> Maybe Text
 -> GelatoIdNumberReportStatus'
 -> GelatoIdNumberReport)
-> Parser
     (Maybe GelatoIdNumberReportDob'
      -> Maybe GelatoIdNumberReportError'
      -> Maybe Text
      -> Maybe Text
      -> Maybe GelatoIdNumberReportIdNumberType'
      -> Maybe Text
      -> GelatoIdNumberReportStatus'
      -> GelatoIdNumberReport)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe GelatoIdNumberReportDob'
-> Maybe GelatoIdNumberReportError'
-> Maybe Text
-> Maybe Text
-> Maybe GelatoIdNumberReportIdNumberType'
-> Maybe Text
-> GelatoIdNumberReportStatus'
-> GelatoIdNumberReport
GelatoIdNumberReport Parser
  (Maybe GelatoIdNumberReportDob'
   -> Maybe GelatoIdNumberReportError'
   -> Maybe Text
   -> Maybe Text
   -> Maybe GelatoIdNumberReportIdNumberType'
   -> Maybe Text
   -> GelatoIdNumberReportStatus'
   -> GelatoIdNumberReport)
-> Parser (Maybe GelatoIdNumberReportDob')
-> Parser
     (Maybe GelatoIdNumberReportError'
      -> Maybe Text
      -> Maybe Text
      -> Maybe GelatoIdNumberReportIdNumberType'
      -> Maybe Text
      -> GelatoIdNumberReportStatus'
      -> GelatoIdNumberReport)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe GelatoIdNumberReportDob')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"dob")) Parser
  (Maybe GelatoIdNumberReportError'
   -> Maybe Text
   -> Maybe Text
   -> Maybe GelatoIdNumberReportIdNumberType'
   -> Maybe Text
   -> GelatoIdNumberReportStatus'
   -> GelatoIdNumberReport)
-> Parser (Maybe GelatoIdNumberReportError')
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe GelatoIdNumberReportIdNumberType'
      -> Maybe Text
      -> GelatoIdNumberReportStatus'
      -> GelatoIdNumberReport)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe GelatoIdNumberReportError')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"error")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe GelatoIdNumberReportIdNumberType'
   -> Maybe Text
   -> GelatoIdNumberReportStatus'
   -> GelatoIdNumberReport)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe GelatoIdNumberReportIdNumberType'
      -> Maybe Text
      -> GelatoIdNumberReportStatus'
      -> GelatoIdNumberReport)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"first_name")) Parser
  (Maybe Text
   -> Maybe GelatoIdNumberReportIdNumberType'
   -> Maybe Text
   -> GelatoIdNumberReportStatus'
   -> GelatoIdNumberReport)
-> Parser (Maybe Text)
-> Parser
     (Maybe GelatoIdNumberReportIdNumberType'
      -> Maybe Text
      -> GelatoIdNumberReportStatus'
      -> GelatoIdNumberReport)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"id_number")) Parser
  (Maybe GelatoIdNumberReportIdNumberType'
   -> Maybe Text
   -> GelatoIdNumberReportStatus'
   -> GelatoIdNumberReport)
-> Parser (Maybe GelatoIdNumberReportIdNumberType')
-> Parser
     (Maybe Text -> GelatoIdNumberReportStatus' -> GelatoIdNumberReport)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe GelatoIdNumberReportIdNumberType')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"id_number_type")) Parser
  (Maybe Text -> GelatoIdNumberReportStatus' -> GelatoIdNumberReport)
-> Parser (Maybe Text)
-> Parser (GelatoIdNumberReportStatus' -> GelatoIdNumberReport)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"last_name")) Parser (GelatoIdNumberReportStatus' -> GelatoIdNumberReport)
-> Parser GelatoIdNumberReportStatus'
-> Parser GelatoIdNumberReport
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser GelatoIdNumberReportStatus'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"status"))

-- | Create a new 'GelatoIdNumberReport' with all required fields.
mkGelatoIdNumberReport ::
  -- | 'gelatoIdNumberReportStatus'
  GelatoIdNumberReportStatus' ->
  GelatoIdNumberReport
mkGelatoIdNumberReport :: GelatoIdNumberReportStatus' -> GelatoIdNumberReport
mkGelatoIdNumberReport GelatoIdNumberReportStatus'
gelatoIdNumberReportStatus =
  GelatoIdNumberReport :: Maybe GelatoIdNumberReportDob'
-> Maybe GelatoIdNumberReportError'
-> Maybe Text
-> Maybe Text
-> Maybe GelatoIdNumberReportIdNumberType'
-> Maybe Text
-> GelatoIdNumberReportStatus'
-> GelatoIdNumberReport
GelatoIdNumberReport
    { gelatoIdNumberReportDob :: Maybe GelatoIdNumberReportDob'
gelatoIdNumberReportDob = Maybe GelatoIdNumberReportDob'
forall a. Maybe a
GHC.Maybe.Nothing,
      gelatoIdNumberReportError :: Maybe GelatoIdNumberReportError'
gelatoIdNumberReportError = Maybe GelatoIdNumberReportError'
forall a. Maybe a
GHC.Maybe.Nothing,
      gelatoIdNumberReportFirstName :: Maybe Text
gelatoIdNumberReportFirstName = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      gelatoIdNumberReportIdNumber :: Maybe Text
gelatoIdNumberReportIdNumber = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      gelatoIdNumberReportIdNumberType :: Maybe GelatoIdNumberReportIdNumberType'
gelatoIdNumberReportIdNumberType = Maybe GelatoIdNumberReportIdNumberType'
forall a. Maybe a
GHC.Maybe.Nothing,
      gelatoIdNumberReportLastName :: Maybe Text
gelatoIdNumberReportLastName = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      gelatoIdNumberReportStatus :: GelatoIdNumberReportStatus'
gelatoIdNumberReportStatus = GelatoIdNumberReportStatus'
gelatoIdNumberReportStatus
    }

-- | Defines the object schema located at @components.schemas.gelato_id_number_report.properties.dob.anyOf@ in the specification.
--
-- Date of birth.
data GelatoIdNumberReportDob' = GelatoIdNumberReportDob'
  { -- | day: Numerical day between 1 and 31.
    GelatoIdNumberReportDob' -> Maybe Int
gelatoIdNumberReportDob'Day :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | month: Numerical month between 1 and 12.
    GelatoIdNumberReportDob' -> Maybe Int
gelatoIdNumberReportDob'Month :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | year: The four-digit year.
    GelatoIdNumberReportDob' -> Maybe Int
gelatoIdNumberReportDob'Year :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int -> GelatoIdNumberReportDob' -> ShowS
[GelatoIdNumberReportDob'] -> ShowS
GelatoIdNumberReportDob' -> String
(Int -> GelatoIdNumberReportDob' -> ShowS)
-> (GelatoIdNumberReportDob' -> String)
-> ([GelatoIdNumberReportDob'] -> ShowS)
-> Show GelatoIdNumberReportDob'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GelatoIdNumberReportDob'] -> ShowS
$cshowList :: [GelatoIdNumberReportDob'] -> ShowS
show :: GelatoIdNumberReportDob' -> String
$cshow :: GelatoIdNumberReportDob' -> String
showsPrec :: Int -> GelatoIdNumberReportDob' -> ShowS
$cshowsPrec :: Int -> GelatoIdNumberReportDob' -> ShowS
GHC.Show.Show,
      GelatoIdNumberReportDob' -> GelatoIdNumberReportDob' -> Bool
(GelatoIdNumberReportDob' -> GelatoIdNumberReportDob' -> Bool)
-> (GelatoIdNumberReportDob' -> GelatoIdNumberReportDob' -> Bool)
-> Eq GelatoIdNumberReportDob'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GelatoIdNumberReportDob' -> GelatoIdNumberReportDob' -> Bool
$c/= :: GelatoIdNumberReportDob' -> GelatoIdNumberReportDob' -> Bool
== :: GelatoIdNumberReportDob' -> GelatoIdNumberReportDob' -> Bool
$c== :: GelatoIdNumberReportDob' -> GelatoIdNumberReportDob' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON GelatoIdNumberReportDob' where
  toJSON :: GelatoIdNumberReportDob' -> Value
toJSON GelatoIdNumberReportDob'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"day" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReportDob' -> Maybe Int
gelatoIdNumberReportDob'Day GelatoIdNumberReportDob'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"month" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReportDob' -> Maybe Int
gelatoIdNumberReportDob'Month GelatoIdNumberReportDob'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"year" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReportDob' -> Maybe Int
gelatoIdNumberReportDob'Year GelatoIdNumberReportDob'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: GelatoIdNumberReportDob' -> Encoding
toEncoding GelatoIdNumberReportDob'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"day" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReportDob' -> Maybe Int
gelatoIdNumberReportDob'Day GelatoIdNumberReportDob'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"month" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReportDob' -> Maybe Int
gelatoIdNumberReportDob'Month GelatoIdNumberReportDob'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"year" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReportDob' -> Maybe Int
gelatoIdNumberReportDob'Year GelatoIdNumberReportDob'
obj)))

instance Data.Aeson.Types.FromJSON.FromJSON GelatoIdNumberReportDob' where
  parseJSON :: Value -> Parser GelatoIdNumberReportDob'
parseJSON = String
-> (Object -> Parser GelatoIdNumberReportDob')
-> Value
-> Parser GelatoIdNumberReportDob'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"GelatoIdNumberReportDob'" (\Object
obj -> (((Maybe Int -> Maybe Int -> Maybe Int -> GelatoIdNumberReportDob')
-> Parser
     (Maybe Int -> Maybe Int -> Maybe Int -> GelatoIdNumberReportDob')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int -> Maybe Int -> Maybe Int -> GelatoIdNumberReportDob'
GelatoIdNumberReportDob' Parser
  (Maybe Int -> Maybe Int -> Maybe Int -> GelatoIdNumberReportDob')
-> Parser (Maybe Int)
-> Parser (Maybe Int -> Maybe Int -> GelatoIdNumberReportDob')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"day")) Parser (Maybe Int -> Maybe Int -> GelatoIdNumberReportDob')
-> Parser (Maybe Int)
-> Parser (Maybe Int -> GelatoIdNumberReportDob')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"month")) Parser (Maybe Int -> GelatoIdNumberReportDob')
-> Parser (Maybe Int) -> Parser GelatoIdNumberReportDob'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"year"))

-- | Create a new 'GelatoIdNumberReportDob'' with all required fields.
mkGelatoIdNumberReportDob' :: GelatoIdNumberReportDob'
mkGelatoIdNumberReportDob' :: GelatoIdNumberReportDob'
mkGelatoIdNumberReportDob' =
  GelatoIdNumberReportDob' :: Maybe Int -> Maybe Int -> Maybe Int -> GelatoIdNumberReportDob'
GelatoIdNumberReportDob'
    { gelatoIdNumberReportDob'Day :: Maybe Int
gelatoIdNumberReportDob'Day = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      gelatoIdNumberReportDob'Month :: Maybe Int
gelatoIdNumberReportDob'Month = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      gelatoIdNumberReportDob'Year :: Maybe Int
gelatoIdNumberReportDob'Year = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.gelato_id_number_report.properties.error.anyOf@ in the specification.
--
-- Details on the verification error. Present when status is \\\`unverified\\\`.
data GelatoIdNumberReportError' = GelatoIdNumberReportError'
  { -- | code: A short machine-readable string giving the reason for the verification failure.
    GelatoIdNumberReportError' -> Maybe GelatoIdNumberReportError'Code'
gelatoIdNumberReportError'Code :: (GHC.Maybe.Maybe GelatoIdNumberReportError'Code'),
    -- | reason: A human-readable message giving the reason for the failure. These messages can be shown to your users.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GelatoIdNumberReportError' -> Maybe Text
gelatoIdNumberReportError'Reason :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> GelatoIdNumberReportError' -> ShowS
[GelatoIdNumberReportError'] -> ShowS
GelatoIdNumberReportError' -> String
(Int -> GelatoIdNumberReportError' -> ShowS)
-> (GelatoIdNumberReportError' -> String)
-> ([GelatoIdNumberReportError'] -> ShowS)
-> Show GelatoIdNumberReportError'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GelatoIdNumberReportError'] -> ShowS
$cshowList :: [GelatoIdNumberReportError'] -> ShowS
show :: GelatoIdNumberReportError' -> String
$cshow :: GelatoIdNumberReportError' -> String
showsPrec :: Int -> GelatoIdNumberReportError' -> ShowS
$cshowsPrec :: Int -> GelatoIdNumberReportError' -> ShowS
GHC.Show.Show,
      GelatoIdNumberReportError' -> GelatoIdNumberReportError' -> Bool
(GelatoIdNumberReportError' -> GelatoIdNumberReportError' -> Bool)
-> (GelatoIdNumberReportError'
    -> GelatoIdNumberReportError' -> Bool)
-> Eq GelatoIdNumberReportError'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GelatoIdNumberReportError' -> GelatoIdNumberReportError' -> Bool
$c/= :: GelatoIdNumberReportError' -> GelatoIdNumberReportError' -> Bool
== :: GelatoIdNumberReportError' -> GelatoIdNumberReportError' -> Bool
$c== :: GelatoIdNumberReportError' -> GelatoIdNumberReportError' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON GelatoIdNumberReportError' where
  toJSON :: GelatoIdNumberReportError' -> Value
toJSON GelatoIdNumberReportError'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"code" Text -> Maybe GelatoIdNumberReportError'Code' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReportError' -> Maybe GelatoIdNumberReportError'Code'
gelatoIdNumberReportError'Code GelatoIdNumberReportError'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"reason" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReportError' -> Maybe Text
gelatoIdNumberReportError'Reason GelatoIdNumberReportError'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: GelatoIdNumberReportError' -> Encoding
toEncoding GelatoIdNumberReportError'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"code" Text -> Maybe GelatoIdNumberReportError'Code' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReportError' -> Maybe GelatoIdNumberReportError'Code'
gelatoIdNumberReportError'Code GelatoIdNumberReportError'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"reason" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoIdNumberReportError' -> Maybe Text
gelatoIdNumberReportError'Reason GelatoIdNumberReportError'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON GelatoIdNumberReportError' where
  parseJSON :: Value -> Parser GelatoIdNumberReportError'
parseJSON = String
-> (Object -> Parser GelatoIdNumberReportError')
-> Value
-> Parser GelatoIdNumberReportError'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"GelatoIdNumberReportError'" (\Object
obj -> ((Maybe GelatoIdNumberReportError'Code'
 -> Maybe Text -> GelatoIdNumberReportError')
-> Parser
     (Maybe GelatoIdNumberReportError'Code'
      -> Maybe Text -> GelatoIdNumberReportError')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe GelatoIdNumberReportError'Code'
-> Maybe Text -> GelatoIdNumberReportError'
GelatoIdNumberReportError' Parser
  (Maybe GelatoIdNumberReportError'Code'
   -> Maybe Text -> GelatoIdNumberReportError')
-> Parser (Maybe GelatoIdNumberReportError'Code')
-> Parser (Maybe Text -> GelatoIdNumberReportError')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe GelatoIdNumberReportError'Code')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"code")) Parser (Maybe Text -> GelatoIdNumberReportError')
-> Parser (Maybe Text) -> Parser GelatoIdNumberReportError'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"reason"))

-- | Create a new 'GelatoIdNumberReportError'' with all required fields.
mkGelatoIdNumberReportError' :: GelatoIdNumberReportError'
mkGelatoIdNumberReportError' :: GelatoIdNumberReportError'
mkGelatoIdNumberReportError' =
  GelatoIdNumberReportError' :: Maybe GelatoIdNumberReportError'Code'
-> Maybe Text -> GelatoIdNumberReportError'
GelatoIdNumberReportError'
    { gelatoIdNumberReportError'Code :: Maybe GelatoIdNumberReportError'Code'
gelatoIdNumberReportError'Code = Maybe GelatoIdNumberReportError'Code'
forall a. Maybe a
GHC.Maybe.Nothing,
      gelatoIdNumberReportError'Reason :: Maybe Text
gelatoIdNumberReportError'Reason = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the enum schema located at @components.schemas.gelato_id_number_report.properties.error.anyOf.properties.code@ in the specification.
--
-- A short machine-readable string giving the reason for the verification failure.
data GelatoIdNumberReportError'Code'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    GelatoIdNumberReportError'Code'Other Data.Aeson.Types.Internal.Value
  | -- | This constructor can be used to send values to the server which are not present in the specification yet.
    GelatoIdNumberReportError'Code'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"id_number_insufficient_document_data"@
    GelatoIdNumberReportError'Code'EnumIdNumberInsufficientDocumentData
  | -- | Represents the JSON value @"id_number_mismatch"@
    GelatoIdNumberReportError'Code'EnumIdNumberMismatch
  | -- | Represents the JSON value @"id_number_unverified_other"@
    GelatoIdNumberReportError'Code'EnumIdNumberUnverifiedOther
  deriving (Int -> GelatoIdNumberReportError'Code' -> ShowS
[GelatoIdNumberReportError'Code'] -> ShowS
GelatoIdNumberReportError'Code' -> String
(Int -> GelatoIdNumberReportError'Code' -> ShowS)
-> (GelatoIdNumberReportError'Code' -> String)
-> ([GelatoIdNumberReportError'Code'] -> ShowS)
-> Show GelatoIdNumberReportError'Code'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GelatoIdNumberReportError'Code'] -> ShowS
$cshowList :: [GelatoIdNumberReportError'Code'] -> ShowS
show :: GelatoIdNumberReportError'Code' -> String
$cshow :: GelatoIdNumberReportError'Code' -> String
showsPrec :: Int -> GelatoIdNumberReportError'Code' -> ShowS
$cshowsPrec :: Int -> GelatoIdNumberReportError'Code' -> ShowS
GHC.Show.Show, GelatoIdNumberReportError'Code'
-> GelatoIdNumberReportError'Code' -> Bool
(GelatoIdNumberReportError'Code'
 -> GelatoIdNumberReportError'Code' -> Bool)
-> (GelatoIdNumberReportError'Code'
    -> GelatoIdNumberReportError'Code' -> Bool)
-> Eq GelatoIdNumberReportError'Code'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GelatoIdNumberReportError'Code'
-> GelatoIdNumberReportError'Code' -> Bool
$c/= :: GelatoIdNumberReportError'Code'
-> GelatoIdNumberReportError'Code' -> Bool
== :: GelatoIdNumberReportError'Code'
-> GelatoIdNumberReportError'Code' -> Bool
$c== :: GelatoIdNumberReportError'Code'
-> GelatoIdNumberReportError'Code' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON GelatoIdNumberReportError'Code' where
  toJSON :: GelatoIdNumberReportError'Code' -> Value
toJSON (GelatoIdNumberReportError'Code'Other Value
val) = Value
val
  toJSON (GelatoIdNumberReportError'Code'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (GelatoIdNumberReportError'Code'
GelatoIdNumberReportError'Code'EnumIdNumberInsufficientDocumentData) = Value
"id_number_insufficient_document_data"
  toJSON (GelatoIdNumberReportError'Code'
GelatoIdNumberReportError'Code'EnumIdNumberMismatch) = Value
"id_number_mismatch"
  toJSON (GelatoIdNumberReportError'Code'
GelatoIdNumberReportError'Code'EnumIdNumberUnverifiedOther) = Value
"id_number_unverified_other"

instance Data.Aeson.Types.FromJSON.FromJSON GelatoIdNumberReportError'Code' where
  parseJSON :: Value -> Parser GelatoIdNumberReportError'Code'
parseJSON Value
val =
    GelatoIdNumberReportError'Code'
-> Parser GelatoIdNumberReportError'Code'
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure
      ( if
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"id_number_insufficient_document_data" -> GelatoIdNumberReportError'Code'
GelatoIdNumberReportError'Code'EnumIdNumberInsufficientDocumentData
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"id_number_mismatch" -> GelatoIdNumberReportError'Code'
GelatoIdNumberReportError'Code'EnumIdNumberMismatch
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"id_number_unverified_other" -> GelatoIdNumberReportError'Code'
GelatoIdNumberReportError'Code'EnumIdNumberUnverifiedOther
            | Bool
GHC.Base.otherwise -> Value -> GelatoIdNumberReportError'Code'
GelatoIdNumberReportError'Code'Other Value
val
      )

-- | Defines the enum schema located at @components.schemas.gelato_id_number_report.properties.id_number_type@ in the specification.
--
-- Type of ID number.
data GelatoIdNumberReportIdNumberType'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    GelatoIdNumberReportIdNumberType'Other Data.Aeson.Types.Internal.Value
  | -- | This constructor can be used to send values to the server which are not present in the specification yet.
    GelatoIdNumberReportIdNumberType'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"br_cpf"@
    GelatoIdNumberReportIdNumberType'EnumBrCpf
  | -- | Represents the JSON value @"sg_nric"@
    GelatoIdNumberReportIdNumberType'EnumSgNric
  | -- | Represents the JSON value @"us_ssn"@
    GelatoIdNumberReportIdNumberType'EnumUsSsn
  deriving (Int -> GelatoIdNumberReportIdNumberType' -> ShowS
[GelatoIdNumberReportIdNumberType'] -> ShowS
GelatoIdNumberReportIdNumberType' -> String
(Int -> GelatoIdNumberReportIdNumberType' -> ShowS)
-> (GelatoIdNumberReportIdNumberType' -> String)
-> ([GelatoIdNumberReportIdNumberType'] -> ShowS)
-> Show GelatoIdNumberReportIdNumberType'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GelatoIdNumberReportIdNumberType'] -> ShowS
$cshowList :: [GelatoIdNumberReportIdNumberType'] -> ShowS
show :: GelatoIdNumberReportIdNumberType' -> String
$cshow :: GelatoIdNumberReportIdNumberType' -> String
showsPrec :: Int -> GelatoIdNumberReportIdNumberType' -> ShowS
$cshowsPrec :: Int -> GelatoIdNumberReportIdNumberType' -> ShowS
GHC.Show.Show, GelatoIdNumberReportIdNumberType'
-> GelatoIdNumberReportIdNumberType' -> Bool
(GelatoIdNumberReportIdNumberType'
 -> GelatoIdNumberReportIdNumberType' -> Bool)
-> (GelatoIdNumberReportIdNumberType'
    -> GelatoIdNumberReportIdNumberType' -> Bool)
-> Eq GelatoIdNumberReportIdNumberType'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GelatoIdNumberReportIdNumberType'
-> GelatoIdNumberReportIdNumberType' -> Bool
$c/= :: GelatoIdNumberReportIdNumberType'
-> GelatoIdNumberReportIdNumberType' -> Bool
== :: GelatoIdNumberReportIdNumberType'
-> GelatoIdNumberReportIdNumberType' -> Bool
$c== :: GelatoIdNumberReportIdNumberType'
-> GelatoIdNumberReportIdNumberType' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON GelatoIdNumberReportIdNumberType' where
  toJSON :: GelatoIdNumberReportIdNumberType' -> Value
toJSON (GelatoIdNumberReportIdNumberType'Other Value
val) = Value
val
  toJSON (GelatoIdNumberReportIdNumberType'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (GelatoIdNumberReportIdNumberType'
GelatoIdNumberReportIdNumberType'EnumBrCpf) = Value
"br_cpf"
  toJSON (GelatoIdNumberReportIdNumberType'
GelatoIdNumberReportIdNumberType'EnumSgNric) = Value
"sg_nric"
  toJSON (GelatoIdNumberReportIdNumberType'
GelatoIdNumberReportIdNumberType'EnumUsSsn) = Value
"us_ssn"

instance Data.Aeson.Types.FromJSON.FromJSON GelatoIdNumberReportIdNumberType' where
  parseJSON :: Value -> Parser GelatoIdNumberReportIdNumberType'
parseJSON Value
val =
    GelatoIdNumberReportIdNumberType'
-> Parser GelatoIdNumberReportIdNumberType'
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure
      ( if
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"br_cpf" -> GelatoIdNumberReportIdNumberType'
GelatoIdNumberReportIdNumberType'EnumBrCpf
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"sg_nric" -> GelatoIdNumberReportIdNumberType'
GelatoIdNumberReportIdNumberType'EnumSgNric
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"us_ssn" -> GelatoIdNumberReportIdNumberType'
GelatoIdNumberReportIdNumberType'EnumUsSsn
            | Bool
GHC.Base.otherwise -> Value -> GelatoIdNumberReportIdNumberType'
GelatoIdNumberReportIdNumberType'Other Value
val
      )

-- | Defines the enum schema located at @components.schemas.gelato_id_number_report.properties.status@ in the specification.
--
-- Status of this \`id_number\` check.
data GelatoIdNumberReportStatus'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    GelatoIdNumberReportStatus'Other Data.Aeson.Types.Internal.Value
  | -- | This constructor can be used to send values to the server which are not present in the specification yet.
    GelatoIdNumberReportStatus'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"unverified"@
    GelatoIdNumberReportStatus'EnumUnverified
  | -- | Represents the JSON value @"verified"@
    GelatoIdNumberReportStatus'EnumVerified
  deriving (Int -> GelatoIdNumberReportStatus' -> ShowS
[GelatoIdNumberReportStatus'] -> ShowS
GelatoIdNumberReportStatus' -> String
(Int -> GelatoIdNumberReportStatus' -> ShowS)
-> (GelatoIdNumberReportStatus' -> String)
-> ([GelatoIdNumberReportStatus'] -> ShowS)
-> Show GelatoIdNumberReportStatus'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GelatoIdNumberReportStatus'] -> ShowS
$cshowList :: [GelatoIdNumberReportStatus'] -> ShowS
show :: GelatoIdNumberReportStatus' -> String
$cshow :: GelatoIdNumberReportStatus' -> String
showsPrec :: Int -> GelatoIdNumberReportStatus' -> ShowS
$cshowsPrec :: Int -> GelatoIdNumberReportStatus' -> ShowS
GHC.Show.Show, GelatoIdNumberReportStatus' -> GelatoIdNumberReportStatus' -> Bool
(GelatoIdNumberReportStatus'
 -> GelatoIdNumberReportStatus' -> Bool)
-> (GelatoIdNumberReportStatus'
    -> GelatoIdNumberReportStatus' -> Bool)
-> Eq GelatoIdNumberReportStatus'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GelatoIdNumberReportStatus' -> GelatoIdNumberReportStatus' -> Bool
$c/= :: GelatoIdNumberReportStatus' -> GelatoIdNumberReportStatus' -> Bool
== :: GelatoIdNumberReportStatus' -> GelatoIdNumberReportStatus' -> Bool
$c== :: GelatoIdNumberReportStatus' -> GelatoIdNumberReportStatus' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON GelatoIdNumberReportStatus' where
  toJSON :: GelatoIdNumberReportStatus' -> Value
toJSON (GelatoIdNumberReportStatus'Other Value
val) = Value
val
  toJSON (GelatoIdNumberReportStatus'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (GelatoIdNumberReportStatus'
GelatoIdNumberReportStatus'EnumUnverified) = Value
"unverified"
  toJSON (GelatoIdNumberReportStatus'
GelatoIdNumberReportStatus'EnumVerified) = Value
"verified"

instance Data.Aeson.Types.FromJSON.FromJSON GelatoIdNumberReportStatus' where
  parseJSON :: Value -> Parser GelatoIdNumberReportStatus'
parseJSON Value
val =
    GelatoIdNumberReportStatus' -> Parser GelatoIdNumberReportStatus'
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure
      ( if
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"unverified" -> GelatoIdNumberReportStatus'
GelatoIdNumberReportStatus'EnumUnverified
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"verified" -> GelatoIdNumberReportStatus'
GelatoIdNumberReportStatus'EnumVerified
            | Bool
GHC.Base.otherwise -> Value -> GelatoIdNumberReportStatus'
GelatoIdNumberReportStatus'Other Value
val
      )