{-# 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 SubscriptionSchedule
module StripeAPI.Types.SubscriptionSchedule 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.Customer
import {-# SOURCE #-} StripeAPI.Types.DeletedCustomer
import {-# SOURCE #-} StripeAPI.Types.Subscription
import {-# SOURCE #-} StripeAPI.Types.SubscriptionScheduleCurrentPhase
import {-# SOURCE #-} StripeAPI.Types.SubscriptionSchedulePhaseConfiguration
import {-# SOURCE #-} StripeAPI.Types.SubscriptionSchedulesResourceDefaultSettings
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.subscription_schedule@ in the specification.
--
-- A subscription schedule allows you to create and manage the lifecycle of a subscription by predefining expected changes.
--
-- Related guide: [Subscription Schedules](https:\/\/stripe.com\/docs\/billing\/subscriptions\/subscription-schedules).
data SubscriptionSchedule = SubscriptionSchedule
  { -- | canceled_at: Time at which the subscription schedule was canceled. Measured in seconds since the Unix epoch.
    SubscriptionSchedule -> Maybe Int
subscriptionScheduleCanceledAt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | completed_at: Time at which the subscription schedule was completed. Measured in seconds since the Unix epoch.
    SubscriptionSchedule -> Maybe Int
subscriptionScheduleCompletedAt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
    SubscriptionSchedule -> Int
subscriptionScheduleCreated :: GHC.Types.Int,
    -- | current_phase: Object representing the start and end dates for the current phase of the subscription schedule, if it is \`active\`.
    SubscriptionSchedule -> Maybe SubscriptionScheduleCurrentPhase'
subscriptionScheduleCurrentPhase :: (GHC.Maybe.Maybe SubscriptionScheduleCurrentPhase'),
    -- | customer: ID of the customer who owns the subscription schedule.
    SubscriptionSchedule -> SubscriptionScheduleCustomer'Variants
subscriptionScheduleCustomer :: SubscriptionScheduleCustomer'Variants,
    -- | default_settings:
    SubscriptionSchedule
-> SubscriptionSchedulesResourceDefaultSettings
subscriptionScheduleDefaultSettings :: SubscriptionSchedulesResourceDefaultSettings,
    -- | end_behavior: Behavior of the subscription schedule and underlying subscription when it ends. Possible values are \`release\` and \`cancel\`.
    SubscriptionSchedule -> SubscriptionScheduleEndBehavior'
subscriptionScheduleEndBehavior :: SubscriptionScheduleEndBehavior',
    -- | id: Unique identifier for the object.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    SubscriptionSchedule -> Text
subscriptionScheduleId :: Data.Text.Internal.Text,
    -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
    SubscriptionSchedule -> Bool
subscriptionScheduleLivemode :: GHC.Types.Bool,
    -- | metadata: Set of [key-value pairs](https:\/\/stripe.com\/docs\/api\/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
    SubscriptionSchedule -> Maybe Object
subscriptionScheduleMetadata :: (GHC.Maybe.Maybe Data.Aeson.Types.Internal.Object),
    -- | phases: Configuration for the subscription schedule\'s phases.
    SubscriptionSchedule -> [SubscriptionSchedulePhaseConfiguration]
subscriptionSchedulePhases :: ([SubscriptionSchedulePhaseConfiguration]),
    -- | released_at: Time at which the subscription schedule was released. Measured in seconds since the Unix epoch.
    SubscriptionSchedule -> Maybe Int
subscriptionScheduleReleasedAt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | released_subscription: ID of the subscription once managed by the subscription schedule (if it is released).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    SubscriptionSchedule -> Maybe Text
subscriptionScheduleReleasedSubscription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | status: The present status of the subscription schedule. Possible values are \`not_started\`, \`active\`, \`completed\`, \`released\`, and \`canceled\`. You can read more about the different states in our [behavior guide](https:\/\/stripe.com\/docs\/billing\/subscriptions\/subscription-schedules).
    SubscriptionSchedule -> SubscriptionScheduleStatus'
subscriptionScheduleStatus :: SubscriptionScheduleStatus',
    -- | subscription: ID of the subscription managed by the subscription schedule.
    SubscriptionSchedule
-> Maybe SubscriptionScheduleSubscription'Variants
subscriptionScheduleSubscription :: (GHC.Maybe.Maybe SubscriptionScheduleSubscription'Variants)
  }
  deriving
    ( Int -> SubscriptionSchedule -> ShowS
[SubscriptionSchedule] -> ShowS
SubscriptionSchedule -> String
(Int -> SubscriptionSchedule -> ShowS)
-> (SubscriptionSchedule -> String)
-> ([SubscriptionSchedule] -> ShowS)
-> Show SubscriptionSchedule
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionSchedule] -> ShowS
$cshowList :: [SubscriptionSchedule] -> ShowS
show :: SubscriptionSchedule -> String
$cshow :: SubscriptionSchedule -> String
showsPrec :: Int -> SubscriptionSchedule -> ShowS
$cshowsPrec :: Int -> SubscriptionSchedule -> ShowS
GHC.Show.Show,
      SubscriptionSchedule -> SubscriptionSchedule -> Bool
(SubscriptionSchedule -> SubscriptionSchedule -> Bool)
-> (SubscriptionSchedule -> SubscriptionSchedule -> Bool)
-> Eq SubscriptionSchedule
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionSchedule -> SubscriptionSchedule -> Bool
$c/= :: SubscriptionSchedule -> SubscriptionSchedule -> Bool
== :: SubscriptionSchedule -> SubscriptionSchedule -> Bool
$c== :: SubscriptionSchedule -> SubscriptionSchedule -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionSchedule where
  toJSON :: SubscriptionSchedule -> Value
toJSON SubscriptionSchedule
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"canceled_at" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Maybe Int
subscriptionScheduleCanceledAt SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"completed_at" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Maybe Int
subscriptionScheduleCompletedAt SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"created" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Int
subscriptionScheduleCreated SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"current_phase" Text -> Maybe SubscriptionScheduleCurrentPhase' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Maybe SubscriptionScheduleCurrentPhase'
subscriptionScheduleCurrentPhase SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"customer" Text -> SubscriptionScheduleCustomer'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> SubscriptionScheduleCustomer'Variants
subscriptionScheduleCustomer SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"default_settings" Text -> SubscriptionSchedulesResourceDefaultSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule
-> SubscriptionSchedulesResourceDefaultSettings
subscriptionScheduleDefaultSettings SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"end_behavior" Text -> SubscriptionScheduleEndBehavior' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> SubscriptionScheduleEndBehavior'
subscriptionScheduleEndBehavior SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"id" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Text
subscriptionScheduleId SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"livemode" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Bool
subscriptionScheduleLivemode SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"metadata" Text -> Maybe Object -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Maybe Object
subscriptionScheduleMetadata SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"phases" Text -> [SubscriptionSchedulePhaseConfiguration] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> [SubscriptionSchedulePhaseConfiguration]
subscriptionSchedulePhases SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"released_at" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Maybe Int
subscriptionScheduleReleasedAt SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"released_subscription" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Maybe Text
subscriptionScheduleReleasedSubscription SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"status" Text -> SubscriptionScheduleStatus' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> SubscriptionScheduleStatus'
subscriptionScheduleStatus SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"subscription" Text -> Maybe SubscriptionScheduleSubscription'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule
-> Maybe SubscriptionScheduleSubscription'Variants
subscriptionScheduleSubscription SubscriptionSchedule
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"object" Text -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"subscription_schedule" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: SubscriptionSchedule -> Encoding
toEncoding SubscriptionSchedule
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"canceled_at" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Maybe Int
subscriptionScheduleCanceledAt SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"completed_at" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Maybe Int
subscriptionScheduleCompletedAt SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"created" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Int
subscriptionScheduleCreated SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"current_phase" Text -> Maybe SubscriptionScheduleCurrentPhase' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Maybe SubscriptionScheduleCurrentPhase'
subscriptionScheduleCurrentPhase SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"customer" Text -> SubscriptionScheduleCustomer'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> SubscriptionScheduleCustomer'Variants
subscriptionScheduleCustomer SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"default_settings" Text -> SubscriptionSchedulesResourceDefaultSettings -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule
-> SubscriptionSchedulesResourceDefaultSettings
subscriptionScheduleDefaultSettings SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"end_behavior" Text -> SubscriptionScheduleEndBehavior' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> SubscriptionScheduleEndBehavior'
subscriptionScheduleEndBehavior SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"id" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Text
subscriptionScheduleId SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"livemode" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Bool
subscriptionScheduleLivemode SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"metadata" Text -> Maybe Object -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Maybe Object
subscriptionScheduleMetadata SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"phases" Text -> [SubscriptionSchedulePhaseConfiguration] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> [SubscriptionSchedulePhaseConfiguration]
subscriptionSchedulePhases SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"released_at" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Maybe Int
subscriptionScheduleReleasedAt SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"released_subscription" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> Maybe Text
subscriptionScheduleReleasedSubscription SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"status" Text -> SubscriptionScheduleStatus' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule -> SubscriptionScheduleStatus'
subscriptionScheduleStatus SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"subscription" Text -> Maybe SubscriptionScheduleSubscription'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionSchedule
-> Maybe SubscriptionScheduleSubscription'Variants
subscriptionScheduleSubscription SubscriptionSchedule
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"object" Text -> Value -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"subscription_schedule"))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionSchedule where
  parseJSON :: Value -> Parser SubscriptionSchedule
parseJSON = String
-> (Object -> Parser SubscriptionSchedule)
-> Value
-> Parser SubscriptionSchedule
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"SubscriptionSchedule" (\Object
obj -> (((((((((((((((Maybe Int
 -> Maybe Int
 -> Int
 -> Maybe SubscriptionScheduleCurrentPhase'
 -> SubscriptionScheduleCustomer'Variants
 -> SubscriptionSchedulesResourceDefaultSettings
 -> SubscriptionScheduleEndBehavior'
 -> Text
 -> Bool
 -> Maybe Object
 -> [SubscriptionSchedulePhaseConfiguration]
 -> Maybe Int
 -> Maybe Text
 -> SubscriptionScheduleStatus'
 -> Maybe SubscriptionScheduleSubscription'Variants
 -> SubscriptionSchedule)
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Int
      -> Maybe SubscriptionScheduleCurrentPhase'
      -> SubscriptionScheduleCustomer'Variants
      -> SubscriptionSchedulesResourceDefaultSettings
      -> SubscriptionScheduleEndBehavior'
      -> Text
      -> Bool
      -> Maybe Object
      -> [SubscriptionSchedulePhaseConfiguration]
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int
-> Maybe Int
-> Int
-> Maybe SubscriptionScheduleCurrentPhase'
-> SubscriptionScheduleCustomer'Variants
-> SubscriptionSchedulesResourceDefaultSettings
-> SubscriptionScheduleEndBehavior'
-> Text
-> Bool
-> Maybe Object
-> [SubscriptionSchedulePhaseConfiguration]
-> Maybe Int
-> Maybe Text
-> SubscriptionScheduleStatus'
-> Maybe SubscriptionScheduleSubscription'Variants
-> SubscriptionSchedule
SubscriptionSchedule Parser
  (Maybe Int
   -> Maybe Int
   -> Int
   -> Maybe SubscriptionScheduleCurrentPhase'
   -> SubscriptionScheduleCustomer'Variants
   -> SubscriptionSchedulesResourceDefaultSettings
   -> SubscriptionScheduleEndBehavior'
   -> Text
   -> Bool
   -> Maybe Object
   -> [SubscriptionSchedulePhaseConfiguration]
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Int
      -> Maybe SubscriptionScheduleCurrentPhase'
      -> SubscriptionScheduleCustomer'Variants
      -> SubscriptionSchedulesResourceDefaultSettings
      -> SubscriptionScheduleEndBehavior'
      -> Text
      -> Bool
      -> Maybe Object
      -> [SubscriptionSchedulePhaseConfiguration]
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
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
"canceled_at")) Parser
  (Maybe Int
   -> Int
   -> Maybe SubscriptionScheduleCurrentPhase'
   -> SubscriptionScheduleCustomer'Variants
   -> SubscriptionSchedulesResourceDefaultSettings
   -> SubscriptionScheduleEndBehavior'
   -> Text
   -> Bool
   -> Maybe Object
   -> [SubscriptionSchedulePhaseConfiguration]
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser (Maybe Int)
-> Parser
     (Int
      -> Maybe SubscriptionScheduleCurrentPhase'
      -> SubscriptionScheduleCustomer'Variants
      -> SubscriptionSchedulesResourceDefaultSettings
      -> SubscriptionScheduleEndBehavior'
      -> Text
      -> Bool
      -> Maybe Object
      -> [SubscriptionSchedulePhaseConfiguration]
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
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
"completed_at")) Parser
  (Int
   -> Maybe SubscriptionScheduleCurrentPhase'
   -> SubscriptionScheduleCustomer'Variants
   -> SubscriptionSchedulesResourceDefaultSettings
   -> SubscriptionScheduleEndBehavior'
   -> Text
   -> Bool
   -> Maybe Object
   -> [SubscriptionSchedulePhaseConfiguration]
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser Int
-> Parser
     (Maybe SubscriptionScheduleCurrentPhase'
      -> SubscriptionScheduleCustomer'Variants
      -> SubscriptionSchedulesResourceDefaultSettings
      -> SubscriptionScheduleEndBehavior'
      -> Text
      -> Bool
      -> Maybe Object
      -> [SubscriptionSchedulePhaseConfiguration]
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"created")) Parser
  (Maybe SubscriptionScheduleCurrentPhase'
   -> SubscriptionScheduleCustomer'Variants
   -> SubscriptionSchedulesResourceDefaultSettings
   -> SubscriptionScheduleEndBehavior'
   -> Text
   -> Bool
   -> Maybe Object
   -> [SubscriptionSchedulePhaseConfiguration]
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser (Maybe SubscriptionScheduleCurrentPhase')
-> Parser
     (SubscriptionScheduleCustomer'Variants
      -> SubscriptionSchedulesResourceDefaultSettings
      -> SubscriptionScheduleEndBehavior'
      -> Text
      -> Bool
      -> Maybe Object
      -> [SubscriptionSchedulePhaseConfiguration]
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe SubscriptionScheduleCurrentPhase')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"current_phase")) Parser
  (SubscriptionScheduleCustomer'Variants
   -> SubscriptionSchedulesResourceDefaultSettings
   -> SubscriptionScheduleEndBehavior'
   -> Text
   -> Bool
   -> Maybe Object
   -> [SubscriptionSchedulePhaseConfiguration]
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser SubscriptionScheduleCustomer'Variants
-> Parser
     (SubscriptionSchedulesResourceDefaultSettings
      -> SubscriptionScheduleEndBehavior'
      -> Text
      -> Bool
      -> Maybe Object
      -> [SubscriptionSchedulePhaseConfiguration]
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser SubscriptionScheduleCustomer'Variants
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"customer")) Parser
  (SubscriptionSchedulesResourceDefaultSettings
   -> SubscriptionScheduleEndBehavior'
   -> Text
   -> Bool
   -> Maybe Object
   -> [SubscriptionSchedulePhaseConfiguration]
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser SubscriptionSchedulesResourceDefaultSettings
-> Parser
     (SubscriptionScheduleEndBehavior'
      -> Text
      -> Bool
      -> Maybe Object
      -> [SubscriptionSchedulePhaseConfiguration]
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser SubscriptionSchedulesResourceDefaultSettings
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"default_settings")) Parser
  (SubscriptionScheduleEndBehavior'
   -> Text
   -> Bool
   -> Maybe Object
   -> [SubscriptionSchedulePhaseConfiguration]
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser SubscriptionScheduleEndBehavior'
-> Parser
     (Text
      -> Bool
      -> Maybe Object
      -> [SubscriptionSchedulePhaseConfiguration]
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser SubscriptionScheduleEndBehavior'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"end_behavior")) Parser
  (Text
   -> Bool
   -> Maybe Object
   -> [SubscriptionSchedulePhaseConfiguration]
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser Text
-> Parser
     (Bool
      -> Maybe Object
      -> [SubscriptionSchedulePhaseConfiguration]
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"id")) Parser
  (Bool
   -> Maybe Object
   -> [SubscriptionSchedulePhaseConfiguration]
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser Bool
-> Parser
     (Maybe Object
      -> [SubscriptionSchedulePhaseConfiguration]
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Bool
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"livemode")) Parser
  (Maybe Object
   -> [SubscriptionSchedulePhaseConfiguration]
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser (Maybe Object)
-> Parser
     ([SubscriptionSchedulePhaseConfiguration]
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Object)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"metadata")) Parser
  ([SubscriptionSchedulePhaseConfiguration]
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser [SubscriptionSchedulePhaseConfiguration]
-> Parser
     (Maybe Int
      -> Maybe Text
      -> SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser [SubscriptionSchedulePhaseConfiguration]
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"phases")) Parser
  (Maybe Int
   -> Maybe Text
   -> SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
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
"released_at")) Parser
  (Maybe Text
   -> SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser (Maybe Text)
-> Parser
     (SubscriptionScheduleStatus'
      -> Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
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
"released_subscription")) Parser
  (SubscriptionScheduleStatus'
   -> Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser SubscriptionScheduleStatus'
-> Parser
     (Maybe SubscriptionScheduleSubscription'Variants
      -> SubscriptionSchedule)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser SubscriptionScheduleStatus'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"status")) Parser
  (Maybe SubscriptionScheduleSubscription'Variants
   -> SubscriptionSchedule)
-> Parser (Maybe SubscriptionScheduleSubscription'Variants)
-> Parser SubscriptionSchedule
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe SubscriptionScheduleSubscription'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"subscription"))

-- | Create a new 'SubscriptionSchedule' with all required fields.
mkSubscriptionSchedule ::
  -- | 'subscriptionScheduleCreated'
  GHC.Types.Int ->
  -- | 'subscriptionScheduleCustomer'
  SubscriptionScheduleCustomer'Variants ->
  -- | 'subscriptionScheduleDefaultSettings'
  SubscriptionSchedulesResourceDefaultSettings ->
  -- | 'subscriptionScheduleEndBehavior'
  SubscriptionScheduleEndBehavior' ->
  -- | 'subscriptionScheduleId'
  Data.Text.Internal.Text ->
  -- | 'subscriptionScheduleLivemode'
  GHC.Types.Bool ->
  -- | 'subscriptionSchedulePhases'
  [SubscriptionSchedulePhaseConfiguration] ->
  -- | 'subscriptionScheduleStatus'
  SubscriptionScheduleStatus' ->
  SubscriptionSchedule
mkSubscriptionSchedule :: Int
-> SubscriptionScheduleCustomer'Variants
-> SubscriptionSchedulesResourceDefaultSettings
-> SubscriptionScheduleEndBehavior'
-> Text
-> Bool
-> [SubscriptionSchedulePhaseConfiguration]
-> SubscriptionScheduleStatus'
-> SubscriptionSchedule
mkSubscriptionSchedule Int
subscriptionScheduleCreated SubscriptionScheduleCustomer'Variants
subscriptionScheduleCustomer SubscriptionSchedulesResourceDefaultSettings
subscriptionScheduleDefaultSettings SubscriptionScheduleEndBehavior'
subscriptionScheduleEndBehavior Text
subscriptionScheduleId Bool
subscriptionScheduleLivemode [SubscriptionSchedulePhaseConfiguration]
subscriptionSchedulePhases SubscriptionScheduleStatus'
subscriptionScheduleStatus =
  SubscriptionSchedule :: Maybe Int
-> Maybe Int
-> Int
-> Maybe SubscriptionScheduleCurrentPhase'
-> SubscriptionScheduleCustomer'Variants
-> SubscriptionSchedulesResourceDefaultSettings
-> SubscriptionScheduleEndBehavior'
-> Text
-> Bool
-> Maybe Object
-> [SubscriptionSchedulePhaseConfiguration]
-> Maybe Int
-> Maybe Text
-> SubscriptionScheduleStatus'
-> Maybe SubscriptionScheduleSubscription'Variants
-> SubscriptionSchedule
SubscriptionSchedule
    { subscriptionScheduleCanceledAt :: Maybe Int
subscriptionScheduleCanceledAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionScheduleCompletedAt :: Maybe Int
subscriptionScheduleCompletedAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionScheduleCreated :: Int
subscriptionScheduleCreated = Int
subscriptionScheduleCreated,
      subscriptionScheduleCurrentPhase :: Maybe SubscriptionScheduleCurrentPhase'
subscriptionScheduleCurrentPhase = Maybe SubscriptionScheduleCurrentPhase'
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionScheduleCustomer :: SubscriptionScheduleCustomer'Variants
subscriptionScheduleCustomer = SubscriptionScheduleCustomer'Variants
subscriptionScheduleCustomer,
      subscriptionScheduleDefaultSettings :: SubscriptionSchedulesResourceDefaultSettings
subscriptionScheduleDefaultSettings = SubscriptionSchedulesResourceDefaultSettings
subscriptionScheduleDefaultSettings,
      subscriptionScheduleEndBehavior :: SubscriptionScheduleEndBehavior'
subscriptionScheduleEndBehavior = SubscriptionScheduleEndBehavior'
subscriptionScheduleEndBehavior,
      subscriptionScheduleId :: Text
subscriptionScheduleId = Text
subscriptionScheduleId,
      subscriptionScheduleLivemode :: Bool
subscriptionScheduleLivemode = Bool
subscriptionScheduleLivemode,
      subscriptionScheduleMetadata :: Maybe Object
subscriptionScheduleMetadata = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionSchedulePhases :: [SubscriptionSchedulePhaseConfiguration]
subscriptionSchedulePhases = [SubscriptionSchedulePhaseConfiguration]
subscriptionSchedulePhases,
      subscriptionScheduleReleasedAt :: Maybe Int
subscriptionScheduleReleasedAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionScheduleReleasedSubscription :: Maybe Text
subscriptionScheduleReleasedSubscription = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionScheduleStatus :: SubscriptionScheduleStatus'
subscriptionScheduleStatus = SubscriptionScheduleStatus'
subscriptionScheduleStatus,
      subscriptionScheduleSubscription :: Maybe SubscriptionScheduleSubscription'Variants
subscriptionScheduleSubscription = Maybe SubscriptionScheduleSubscription'Variants
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.subscription_schedule.properties.current_phase.anyOf@ in the specification.
--
-- Object representing the start and end dates for the current phase of the subscription schedule, if it is \\\`active\\\`.
data SubscriptionScheduleCurrentPhase' = SubscriptionScheduleCurrentPhase'
  { -- | end_date: The end of this phase of the subscription schedule.
    SubscriptionScheduleCurrentPhase' -> Maybe Int
subscriptionScheduleCurrentPhase'EndDate :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | start_date: The start of this phase of the subscription schedule.
    SubscriptionScheduleCurrentPhase' -> Maybe Int
subscriptionScheduleCurrentPhase'StartDate :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int -> SubscriptionScheduleCurrentPhase' -> ShowS
[SubscriptionScheduleCurrentPhase'] -> ShowS
SubscriptionScheduleCurrentPhase' -> String
(Int -> SubscriptionScheduleCurrentPhase' -> ShowS)
-> (SubscriptionScheduleCurrentPhase' -> String)
-> ([SubscriptionScheduleCurrentPhase'] -> ShowS)
-> Show SubscriptionScheduleCurrentPhase'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionScheduleCurrentPhase'] -> ShowS
$cshowList :: [SubscriptionScheduleCurrentPhase'] -> ShowS
show :: SubscriptionScheduleCurrentPhase' -> String
$cshow :: SubscriptionScheduleCurrentPhase' -> String
showsPrec :: Int -> SubscriptionScheduleCurrentPhase' -> ShowS
$cshowsPrec :: Int -> SubscriptionScheduleCurrentPhase' -> ShowS
GHC.Show.Show,
      SubscriptionScheduleCurrentPhase'
-> SubscriptionScheduleCurrentPhase' -> Bool
(SubscriptionScheduleCurrentPhase'
 -> SubscriptionScheduleCurrentPhase' -> Bool)
-> (SubscriptionScheduleCurrentPhase'
    -> SubscriptionScheduleCurrentPhase' -> Bool)
-> Eq SubscriptionScheduleCurrentPhase'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionScheduleCurrentPhase'
-> SubscriptionScheduleCurrentPhase' -> Bool
$c/= :: SubscriptionScheduleCurrentPhase'
-> SubscriptionScheduleCurrentPhase' -> Bool
== :: SubscriptionScheduleCurrentPhase'
-> SubscriptionScheduleCurrentPhase' -> Bool
$c== :: SubscriptionScheduleCurrentPhase'
-> SubscriptionScheduleCurrentPhase' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionScheduleCurrentPhase' where
  toJSON :: SubscriptionScheduleCurrentPhase' -> Value
toJSON SubscriptionScheduleCurrentPhase'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"end_date" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionScheduleCurrentPhase' -> Maybe Int
subscriptionScheduleCurrentPhase'EndDate SubscriptionScheduleCurrentPhase'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"start_date" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionScheduleCurrentPhase' -> Maybe Int
subscriptionScheduleCurrentPhase'StartDate SubscriptionScheduleCurrentPhase'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: SubscriptionScheduleCurrentPhase' -> Encoding
toEncoding SubscriptionScheduleCurrentPhase'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"end_date" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionScheduleCurrentPhase' -> Maybe Int
subscriptionScheduleCurrentPhase'EndDate SubscriptionScheduleCurrentPhase'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"start_date" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionScheduleCurrentPhase' -> Maybe Int
subscriptionScheduleCurrentPhase'StartDate SubscriptionScheduleCurrentPhase'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionScheduleCurrentPhase' where
  parseJSON :: Value -> Parser SubscriptionScheduleCurrentPhase'
parseJSON = String
-> (Object -> Parser SubscriptionScheduleCurrentPhase')
-> Value
-> Parser SubscriptionScheduleCurrentPhase'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"SubscriptionScheduleCurrentPhase'" (\Object
obj -> ((Maybe Int -> Maybe Int -> SubscriptionScheduleCurrentPhase')
-> Parser
     (Maybe Int -> Maybe Int -> SubscriptionScheduleCurrentPhase')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int -> Maybe Int -> SubscriptionScheduleCurrentPhase'
SubscriptionScheduleCurrentPhase' Parser
  (Maybe Int -> Maybe Int -> SubscriptionScheduleCurrentPhase')
-> Parser (Maybe Int)
-> Parser (Maybe Int -> SubscriptionScheduleCurrentPhase')
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
"end_date")) Parser (Maybe Int -> SubscriptionScheduleCurrentPhase')
-> Parser (Maybe Int) -> Parser SubscriptionScheduleCurrentPhase'
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
"start_date"))

-- | Create a new 'SubscriptionScheduleCurrentPhase'' with all required fields.
mkSubscriptionScheduleCurrentPhase' :: SubscriptionScheduleCurrentPhase'
mkSubscriptionScheduleCurrentPhase' :: SubscriptionScheduleCurrentPhase'
mkSubscriptionScheduleCurrentPhase' =
  SubscriptionScheduleCurrentPhase' :: Maybe Int -> Maybe Int -> SubscriptionScheduleCurrentPhase'
SubscriptionScheduleCurrentPhase'
    { subscriptionScheduleCurrentPhase'EndDate :: Maybe Int
subscriptionScheduleCurrentPhase'EndDate = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionScheduleCurrentPhase'StartDate :: Maybe Int
subscriptionScheduleCurrentPhase'StartDate = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @components.schemas.subscription_schedule.properties.customer.anyOf@ in the specification.
--
-- ID of the customer who owns the subscription schedule.
data SubscriptionScheduleCustomer'Variants
  = SubscriptionScheduleCustomer'Text Data.Text.Internal.Text
  | SubscriptionScheduleCustomer'Customer Customer
  | SubscriptionScheduleCustomer'DeletedCustomer DeletedCustomer
  deriving (Int -> SubscriptionScheduleCustomer'Variants -> ShowS
[SubscriptionScheduleCustomer'Variants] -> ShowS
SubscriptionScheduleCustomer'Variants -> String
(Int -> SubscriptionScheduleCustomer'Variants -> ShowS)
-> (SubscriptionScheduleCustomer'Variants -> String)
-> ([SubscriptionScheduleCustomer'Variants] -> ShowS)
-> Show SubscriptionScheduleCustomer'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionScheduleCustomer'Variants] -> ShowS
$cshowList :: [SubscriptionScheduleCustomer'Variants] -> ShowS
show :: SubscriptionScheduleCustomer'Variants -> String
$cshow :: SubscriptionScheduleCustomer'Variants -> String
showsPrec :: Int -> SubscriptionScheduleCustomer'Variants -> ShowS
$cshowsPrec :: Int -> SubscriptionScheduleCustomer'Variants -> ShowS
GHC.Show.Show, SubscriptionScheduleCustomer'Variants
-> SubscriptionScheduleCustomer'Variants -> Bool
(SubscriptionScheduleCustomer'Variants
 -> SubscriptionScheduleCustomer'Variants -> Bool)
-> (SubscriptionScheduleCustomer'Variants
    -> SubscriptionScheduleCustomer'Variants -> Bool)
-> Eq SubscriptionScheduleCustomer'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionScheduleCustomer'Variants
-> SubscriptionScheduleCustomer'Variants -> Bool
$c/= :: SubscriptionScheduleCustomer'Variants
-> SubscriptionScheduleCustomer'Variants -> Bool
== :: SubscriptionScheduleCustomer'Variants
-> SubscriptionScheduleCustomer'Variants -> Bool
$c== :: SubscriptionScheduleCustomer'Variants
-> SubscriptionScheduleCustomer'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionScheduleCustomer'Variants where
  toJSON :: SubscriptionScheduleCustomer'Variants -> Value
toJSON (SubscriptionScheduleCustomer'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (SubscriptionScheduleCustomer'Customer Customer
a) = Customer -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Customer
a
  toJSON (SubscriptionScheduleCustomer'DeletedCustomer DeletedCustomer
a) = DeletedCustomer -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON DeletedCustomer
a

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionScheduleCustomer'Variants where
  parseJSON :: Value -> Parser SubscriptionScheduleCustomer'Variants
parseJSON Value
val = case (Text -> SubscriptionScheduleCustomer'Variants
SubscriptionScheduleCustomer'Text (Text -> SubscriptionScheduleCustomer'Variants)
-> Result Text -> Result SubscriptionScheduleCustomer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionScheduleCustomer'Variants
-> Result SubscriptionScheduleCustomer'Variants
-> Result SubscriptionScheduleCustomer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Customer -> SubscriptionScheduleCustomer'Variants
SubscriptionScheduleCustomer'Customer (Customer -> SubscriptionScheduleCustomer'Variants)
-> Result Customer -> Result SubscriptionScheduleCustomer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Customer
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionScheduleCustomer'Variants
-> Result SubscriptionScheduleCustomer'Variants
-> Result SubscriptionScheduleCustomer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((DeletedCustomer -> SubscriptionScheduleCustomer'Variants
SubscriptionScheduleCustomer'DeletedCustomer (DeletedCustomer -> SubscriptionScheduleCustomer'Variants)
-> Result DeletedCustomer
-> Result SubscriptionScheduleCustomer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result DeletedCustomer
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionScheduleCustomer'Variants
-> Result SubscriptionScheduleCustomer'Variants
-> Result SubscriptionScheduleCustomer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result SubscriptionScheduleCustomer'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched")) of
    Data.Aeson.Types.Internal.Success SubscriptionScheduleCustomer'Variants
a -> SubscriptionScheduleCustomer'Variants
-> Parser SubscriptionScheduleCustomer'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure SubscriptionScheduleCustomer'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser SubscriptionScheduleCustomer'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the enum schema located at @components.schemas.subscription_schedule.properties.end_behavior@ in the specification.
--
-- Behavior of the subscription schedule and underlying subscription when it ends. Possible values are \`release\` and \`cancel\`.
data SubscriptionScheduleEndBehavior'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    SubscriptionScheduleEndBehavior'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.
    SubscriptionScheduleEndBehavior'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"cancel"@
    SubscriptionScheduleEndBehavior'EnumCancel
  | -- | Represents the JSON value @"none"@
    SubscriptionScheduleEndBehavior'EnumNone
  | -- | Represents the JSON value @"release"@
    SubscriptionScheduleEndBehavior'EnumRelease
  | -- | Represents the JSON value @"renew"@
    SubscriptionScheduleEndBehavior'EnumRenew
  deriving (Int -> SubscriptionScheduleEndBehavior' -> ShowS
[SubscriptionScheduleEndBehavior'] -> ShowS
SubscriptionScheduleEndBehavior' -> String
(Int -> SubscriptionScheduleEndBehavior' -> ShowS)
-> (SubscriptionScheduleEndBehavior' -> String)
-> ([SubscriptionScheduleEndBehavior'] -> ShowS)
-> Show SubscriptionScheduleEndBehavior'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionScheduleEndBehavior'] -> ShowS
$cshowList :: [SubscriptionScheduleEndBehavior'] -> ShowS
show :: SubscriptionScheduleEndBehavior' -> String
$cshow :: SubscriptionScheduleEndBehavior' -> String
showsPrec :: Int -> SubscriptionScheduleEndBehavior' -> ShowS
$cshowsPrec :: Int -> SubscriptionScheduleEndBehavior' -> ShowS
GHC.Show.Show, SubscriptionScheduleEndBehavior'
-> SubscriptionScheduleEndBehavior' -> Bool
(SubscriptionScheduleEndBehavior'
 -> SubscriptionScheduleEndBehavior' -> Bool)
-> (SubscriptionScheduleEndBehavior'
    -> SubscriptionScheduleEndBehavior' -> Bool)
-> Eq SubscriptionScheduleEndBehavior'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionScheduleEndBehavior'
-> SubscriptionScheduleEndBehavior' -> Bool
$c/= :: SubscriptionScheduleEndBehavior'
-> SubscriptionScheduleEndBehavior' -> Bool
== :: SubscriptionScheduleEndBehavior'
-> SubscriptionScheduleEndBehavior' -> Bool
$c== :: SubscriptionScheduleEndBehavior'
-> SubscriptionScheduleEndBehavior' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionScheduleEndBehavior' where
  toJSON :: SubscriptionScheduleEndBehavior' -> Value
toJSON (SubscriptionScheduleEndBehavior'Other Value
val) = Value
val
  toJSON (SubscriptionScheduleEndBehavior'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (SubscriptionScheduleEndBehavior'
SubscriptionScheduleEndBehavior'EnumCancel) = Value
"cancel"
  toJSON (SubscriptionScheduleEndBehavior'
SubscriptionScheduleEndBehavior'EnumNone) = Value
"none"
  toJSON (SubscriptionScheduleEndBehavior'
SubscriptionScheduleEndBehavior'EnumRelease) = Value
"release"
  toJSON (SubscriptionScheduleEndBehavior'
SubscriptionScheduleEndBehavior'EnumRenew) = Value
"renew"

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionScheduleEndBehavior' where
  parseJSON :: Value -> Parser SubscriptionScheduleEndBehavior'
parseJSON Value
val =
    SubscriptionScheduleEndBehavior'
-> Parser SubscriptionScheduleEndBehavior'
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
"cancel" -> SubscriptionScheduleEndBehavior'
SubscriptionScheduleEndBehavior'EnumCancel
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"none" -> SubscriptionScheduleEndBehavior'
SubscriptionScheduleEndBehavior'EnumNone
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"release" -> SubscriptionScheduleEndBehavior'
SubscriptionScheduleEndBehavior'EnumRelease
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"renew" -> SubscriptionScheduleEndBehavior'
SubscriptionScheduleEndBehavior'EnumRenew
            | Bool
GHC.Base.otherwise -> Value -> SubscriptionScheduleEndBehavior'
SubscriptionScheduleEndBehavior'Other Value
val
      )

-- | Defines the enum schema located at @components.schemas.subscription_schedule.properties.status@ in the specification.
--
-- The present status of the subscription schedule. Possible values are \`not_started\`, \`active\`, \`completed\`, \`released\`, and \`canceled\`. You can read more about the different states in our [behavior guide](https:\/\/stripe.com\/docs\/billing\/subscriptions\/subscription-schedules).
data SubscriptionScheduleStatus'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    SubscriptionScheduleStatus'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.
    SubscriptionScheduleStatus'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"active"@
    SubscriptionScheduleStatus'EnumActive
  | -- | Represents the JSON value @"canceled"@
    SubscriptionScheduleStatus'EnumCanceled
  | -- | Represents the JSON value @"completed"@
    SubscriptionScheduleStatus'EnumCompleted
  | -- | Represents the JSON value @"not_started"@
    SubscriptionScheduleStatus'EnumNotStarted
  | -- | Represents the JSON value @"released"@
    SubscriptionScheduleStatus'EnumReleased
  deriving (Int -> SubscriptionScheduleStatus' -> ShowS
[SubscriptionScheduleStatus'] -> ShowS
SubscriptionScheduleStatus' -> String
(Int -> SubscriptionScheduleStatus' -> ShowS)
-> (SubscriptionScheduleStatus' -> String)
-> ([SubscriptionScheduleStatus'] -> ShowS)
-> Show SubscriptionScheduleStatus'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionScheduleStatus'] -> ShowS
$cshowList :: [SubscriptionScheduleStatus'] -> ShowS
show :: SubscriptionScheduleStatus' -> String
$cshow :: SubscriptionScheduleStatus' -> String
showsPrec :: Int -> SubscriptionScheduleStatus' -> ShowS
$cshowsPrec :: Int -> SubscriptionScheduleStatus' -> ShowS
GHC.Show.Show, SubscriptionScheduleStatus' -> SubscriptionScheduleStatus' -> Bool
(SubscriptionScheduleStatus'
 -> SubscriptionScheduleStatus' -> Bool)
-> (SubscriptionScheduleStatus'
    -> SubscriptionScheduleStatus' -> Bool)
-> Eq SubscriptionScheduleStatus'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionScheduleStatus' -> SubscriptionScheduleStatus' -> Bool
$c/= :: SubscriptionScheduleStatus' -> SubscriptionScheduleStatus' -> Bool
== :: SubscriptionScheduleStatus' -> SubscriptionScheduleStatus' -> Bool
$c== :: SubscriptionScheduleStatus' -> SubscriptionScheduleStatus' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionScheduleStatus' where
  toJSON :: SubscriptionScheduleStatus' -> Value
toJSON (SubscriptionScheduleStatus'Other Value
val) = Value
val
  toJSON (SubscriptionScheduleStatus'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (SubscriptionScheduleStatus'
SubscriptionScheduleStatus'EnumActive) = Value
"active"
  toJSON (SubscriptionScheduleStatus'
SubscriptionScheduleStatus'EnumCanceled) = Value
"canceled"
  toJSON (SubscriptionScheduleStatus'
SubscriptionScheduleStatus'EnumCompleted) = Value
"completed"
  toJSON (SubscriptionScheduleStatus'
SubscriptionScheduleStatus'EnumNotStarted) = Value
"not_started"
  toJSON (SubscriptionScheduleStatus'
SubscriptionScheduleStatus'EnumReleased) = Value
"released"

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionScheduleStatus' where
  parseJSON :: Value -> Parser SubscriptionScheduleStatus'
parseJSON Value
val =
    SubscriptionScheduleStatus' -> Parser SubscriptionScheduleStatus'
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
"active" -> SubscriptionScheduleStatus'
SubscriptionScheduleStatus'EnumActive
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"canceled" -> SubscriptionScheduleStatus'
SubscriptionScheduleStatus'EnumCanceled
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"completed" -> SubscriptionScheduleStatus'
SubscriptionScheduleStatus'EnumCompleted
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"not_started" -> SubscriptionScheduleStatus'
SubscriptionScheduleStatus'EnumNotStarted
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"released" -> SubscriptionScheduleStatus'
SubscriptionScheduleStatus'EnumReleased
            | Bool
GHC.Base.otherwise -> Value -> SubscriptionScheduleStatus'
SubscriptionScheduleStatus'Other Value
val
      )

-- | Defines the oneOf schema located at @components.schemas.subscription_schedule.properties.subscription.anyOf@ in the specification.
--
-- ID of the subscription managed by the subscription schedule.
data SubscriptionScheduleSubscription'Variants
  = SubscriptionScheduleSubscription'Text Data.Text.Internal.Text
  | SubscriptionScheduleSubscription'Subscription Subscription
  deriving (Int -> SubscriptionScheduleSubscription'Variants -> ShowS
[SubscriptionScheduleSubscription'Variants] -> ShowS
SubscriptionScheduleSubscription'Variants -> String
(Int -> SubscriptionScheduleSubscription'Variants -> ShowS)
-> (SubscriptionScheduleSubscription'Variants -> String)
-> ([SubscriptionScheduleSubscription'Variants] -> ShowS)
-> Show SubscriptionScheduleSubscription'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionScheduleSubscription'Variants] -> ShowS
$cshowList :: [SubscriptionScheduleSubscription'Variants] -> ShowS
show :: SubscriptionScheduleSubscription'Variants -> String
$cshow :: SubscriptionScheduleSubscription'Variants -> String
showsPrec :: Int -> SubscriptionScheduleSubscription'Variants -> ShowS
$cshowsPrec :: Int -> SubscriptionScheduleSubscription'Variants -> ShowS
GHC.Show.Show, SubscriptionScheduleSubscription'Variants
-> SubscriptionScheduleSubscription'Variants -> Bool
(SubscriptionScheduleSubscription'Variants
 -> SubscriptionScheduleSubscription'Variants -> Bool)
-> (SubscriptionScheduleSubscription'Variants
    -> SubscriptionScheduleSubscription'Variants -> Bool)
-> Eq SubscriptionScheduleSubscription'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionScheduleSubscription'Variants
-> SubscriptionScheduleSubscription'Variants -> Bool
$c/= :: SubscriptionScheduleSubscription'Variants
-> SubscriptionScheduleSubscription'Variants -> Bool
== :: SubscriptionScheduleSubscription'Variants
-> SubscriptionScheduleSubscription'Variants -> Bool
$c== :: SubscriptionScheduleSubscription'Variants
-> SubscriptionScheduleSubscription'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionScheduleSubscription'Variants where
  toJSON :: SubscriptionScheduleSubscription'Variants -> Value
toJSON (SubscriptionScheduleSubscription'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (SubscriptionScheduleSubscription'Subscription Subscription
a) = Subscription -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Subscription
a

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionScheduleSubscription'Variants where
  parseJSON :: Value -> Parser SubscriptionScheduleSubscription'Variants
parseJSON Value
val = case (Text -> SubscriptionScheduleSubscription'Variants
SubscriptionScheduleSubscription'Text (Text -> SubscriptionScheduleSubscription'Variants)
-> Result Text -> Result SubscriptionScheduleSubscription'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionScheduleSubscription'Variants
-> Result SubscriptionScheduleSubscription'Variants
-> Result SubscriptionScheduleSubscription'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Subscription -> SubscriptionScheduleSubscription'Variants
SubscriptionScheduleSubscription'Subscription (Subscription -> SubscriptionScheduleSubscription'Variants)
-> Result Subscription
-> Result SubscriptionScheduleSubscription'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Subscription
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionScheduleSubscription'Variants
-> Result SubscriptionScheduleSubscription'Variants
-> Result SubscriptionScheduleSubscription'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result SubscriptionScheduleSubscription'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success SubscriptionScheduleSubscription'Variants
a -> SubscriptionScheduleSubscription'Variants
-> Parser SubscriptionScheduleSubscription'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure SubscriptionScheduleSubscription'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser SubscriptionScheduleSubscription'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a